Apache MPMs - рабочий против Prefork

13

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

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

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


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

Аликс Аксель
источник
2
Проблема в том, что, хотя ядро ​​PHP теперь должно быть поточно-ориентированным, когда дело доходит до расширений, все ставки отключены.
Mattdm

Ответы:

12

Вы должны использовать 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

dialt0ne
источник
Что касается MPache от Apache, я думаю, что у меня есть, prefork - это путь. Я склонен к настройке nginx или lighttpd из-за высокого потребления памяти Apache. Lighttpd и PHP-FCGI работают из коробки при установке с помощью aptitude, однако я не уверен, что утечки памяти, о которых все говорят в 06/07, все еще присутствуют. Я также читал, что Nginx имеет более низкую загрузку процессора, но я не могу заставить его работать с PHP-CGI, не говоря уже о PHP-FPM. Есть ли простой способ установить это на Ubuntu с помощью менеджера пакетов? Вы рекомендуете читать на эту тему?
Аликс Аксель
С включенной Multiverse я смог «apt-get install nginx» на lucid, и он работает как первоклассный - я использую в производственных системах. Здесь есть хороший начальный пример, howtoforge.com/… но, как всегда, YMMV.
dialt0ne
Я могу установить nginx, используя apt, но мне не удается связать его с интерпретатором PHP. Ссылка, которую вы предоставили, имеет новый источник, который, по-видимому, предоставляет php5-fpmпакет. Я собираюсь попробовать это.
Аликс Аксель
Эта ссылка может быть лучше: howtoforge.com/… Я использую репозиторий brianmercer для своих производственных систем для php5-fpm.
dialt0ne