нашето приложение Rails 4 работи в thin -s 16 ...
мултипроцесен сървър с Apache като интерфейс и неговия обратен прокси, обработващ вътрешните заявки. Всичко работи добре и производителността е наред за нашия брой потребители.
Тъй като всичко работи веднага, не се притеснявах как всъщност работи Thin. Наскоро обаче се натъкнах на всички добрини на Fibers и EventMachine и прочетох много за тях.
Thin използва EventMachine за обработка на Rack заявки. Така че по дизайн той ще може да обработва множество заявки паралелно с един ruby процес. За съжаление, докато тънката документация е достатъчно функционална, за да можете да стартирате сървъра за няколко минути работа, тя е доста тиха за вътрешната работа.
Правилно ли приемам, че всички приказки за „конкурентност“ са спорни, щом стартирам Thin with Rails? ActiveRecord, DB драйверите, обработката на шаблони и т.н. вероятно не са активирани за EM, не използват Fibers и т.н., следователно така или иначе ще блокират единичния процес, като в същото време използват по-голямата част от времето за обработка от страна на сървъра в DB-heavy приложения.
Всичките ми изследвания изглежда водят до това заключение; за съжаление уебсайтът/документите на Thin не казват нищо за това. Честно казано, объркан съм как думата "едновременен" изобщо влиза в картината тук...
Може ли някой да ми изясни това? Пропускам ли някаква фундаментална информация, или "едновременността" е рекламирана на http://code.macournoyer.com/thin/ означава по отношение на ръчно създадени Rack сървъри, които не използват Rails или друг "тежък" междинен софтуер?
Благодаря!