Назад | Перейти на главную страницу

MPM Apache - Worker против Prefork

Я пытаюсь понять, какой Apache MPM лучше всего я могу установить на свой VPS. Я видел несколько тестов, и MPM Worker, кажется, работает лучше, чем Prefork, но по какой-то причине все, похоже, рекомендуют Prefork вместо Worker для настроек PHP.

Это просто потому, что некоторые функции PHP не являются потокобезопасными? Только setlocale() приходит на ум, но я буду использовать одну и ту же локаль в каждом экземпляре, поэтому не думаю, что это будет проблемой. У моего VPS мало памяти, и я чувствую, что рабочий MPM больше подходит для моих нужд, но я не уверен.

Может ли кто-нибудь помочь мне определиться с этим? Спасибо!


PS: Я также изучил nginx и lighttpd. nginx кажется отличным, но я стараюсь избегать компиляции из исходников и до сих пор не совсем понимаю, для чего нужен php-fpm. Что касается lighttpd - с его помощью было невероятно легко настроить PHP / FCGI, но я слышал, что у него есть утечки памяти. Это все еще правда?

Вы должны использовать prefork при использовании apache + mod_php. В FAQ четко указано, почему:

http://www.php.net/manual/en/faq.installation.php#faq.installation.apache2

Почему мне не следует использовать Apache2 с многопоточным MPM в производственной среде?

PHP - это клей. Это клей, используемый для создания классных веб-приложений путем объединения десятков сторонних библиотек и создания единого связного объекта с помощью интуитивно понятного и простого в освоении языкового интерфейса. Гибкость и мощность PHP зависят от стабильности и надежности базовой платформы. Ему нужна рабочая ОС, рабочий веб-сервер и рабочие сторонние библиотеки, чтобы склеить их вместе. Когда какая-либо из этих проблем перестает работать, PHP необходимы способы выявления проблем и их быстрого устранения. Когда вы усложняете базовую структуру, не имея полностью отдельных потоков выполнения, полностью разделенных сегментов памяти и сильной песочницы для каждого запроса, в которой можно играть, в систему PHP вводятся дополнительные недостатки.

nginx + php-fpm также является отличным способом запуска приложений php. nginx имеет встроенную поддержку FastCGI, а php-fpm - один из лучших способов запустить php в среде FastCGI. См. Документацию по php здесь:

http://www.php.net/manual/en/install.fpm.php