Цинизъм в него apache2 prefork срещу работник
Доста дълго време, когато инсталирате на уеб сървъра Apache, се съмнявах дали да сложа apache2-работник или apache2-prefork, и това е е дошло времето, когато за да се отстрани всякакво двусмислие при избора и ясно да опише как и кога да го използвате.
Официален документация сървъра казва следното:
Избор на MPM
Apache 2.x поддържа щепселно модели едновременност, наречени Multi-обработка модули (MPMs). При изграждането на Apache, трябва да изберете един MPM за използване. Има конкретната платформа MPMs за някои платформи: BeOS, mpm_netware, mpmt_os2 и mpm_winnt. За общи системи Unix тип, има няколко MPMs от които да избирате. Изборът на MPM може да повлияе на скоростта и мащабируемостта на уеб-:
* Работникът MPM използва няколко деца процеси с много нишки всяка. Всяка нишка дръжки една връзка в даден момент. Работник по принцип е добър избор за сървъри с висок трафик, защото има по-малък отпечатък памет от prefork MPM.
* MPM на prefork използва няколко деца процеси с една нишка, всеки от тях. Всеки процес дръжки една връзка в даден момент. На много системи, prefork е сравнима в скоростта на работник, но той използва повече памет. Threadless дизайн Prefork има предимства пред работник в някои ситуации: тя може да се използва с не-конци-безопасно от трети страни модули, и е по-лесно за отстраняване на грешки на платформи със слаба подкрепа конец отстраняване на грешки.
За повече информация относно тези и други MPMs, моля, вижте документацията MPM
Превод на всичко не предприемат, в смисъл, че аз не виждам, но аз ще се опитам да опиша с няколко думи, това, което правят всеки един от тези модули.
Документацията се обяснява, че на сървъра Apache2 мултитрединга се реализира чрез плъгини - MPM (около превода Съмнявам се, но, по мое мнение, е по-добре се превежда като "модули многонишков обработка", въпреки че по-нататък ще използвам съкращението предвид големите размери на името) които са за конкретната платформа. Има два основни модела MPM модула - работник MPM и prefork MPM.
Работник работи, както следва: - когато започнете няколко детски процеси, създадени от няколко теми във всеки (как точно се разбира под "няколко" е разположен в конфигурационния файл Apache2). Както е посочено предимство на този модул намалена консумация на паметта в сравнение с Prefork модул. Също така, този модул се препоръчва за тежко натоварени уеб сървъри.
Prefork също създава редица наследствени процеса, но за разлика от работника, всеки, включително точно една нишка. Т.е. всеки процес третира само една връзка. За скоростта това показва, че скоростта на двата модула е повече или по-сравними, но Prefork консумира повече памет. Използването bezpotochnogo модул Prefork за предпочитане в случая на модули, които нямат сигурна многонишково. Също така се препоръчва да се използва Prefork на платформи, където отстраняване на грешки многонишкови приложения, които не са реализирани на съответното ниво (между другото, да отстраняваме многонишков приложения дори с една добра система за подкрепа от него - не прости).
В заключение, бих искал да добавя, че не е недвусмислен избор, всички трябваше да реши проблемите, но трябва да се помни, че Prefork модел (който, между другото, е единственият модел, който поддържа сървъра Apache 1.3) е известно, че по-стабилна, тъй като повреда в един процес не засяга други процеси, и в работник недостатъчност случай в един поток може инактивиране на няколко съседни потоци че работник показва по-висока скорост в определен диапазон от приложения (особено силно натоварени сървър).
Сега ние се опитваме да извършват тестове, как да работят на Apache + PHP mod_fcgi конфигурации Prefork и работник.