Какой Apache MPM для «тяжелого» PHP-приложения с небольшим количеством пользователей

Какой Apache MPM для «тяжелого» PHP-приложения с небольшим количеством пользователей

У меня есть PHP-приложение, интенсивно использующее базу данных, которое может работать в течение многих часов, обрабатывая и создавая тысячи внешних сетевых подключений.

К этому приложению одновременно будет подключено менее 3 пользователей.

Какой Apache MPM лучше всего подходит для этой рабочей нагрузки: prefork/mod_php или worker/mod_fcgid?

Я использую Debian Lenny x64, одноядерный, 4 ГБ оперативной памяти.

решение1

Для более медленных машин рабочий режим работает лучше и генерирует меньшее использование ЦП и нагрузки.
Для мощных машин, обслуживающих статический контент, prefork mpm примерно на 5% быстрее.

Я рекомендую, если у вас есть возможность, провести несколько тестов с помощью apache benchmark:Apache-бенчмарк

Также вы можете взглянуть на этот бенчмарк:Apache prefork против worker

Ваша база данных установлена ​​на том же сервере?

решение2

Apache имеет два широко используемых модуля MPM — Worker MPM и Pre-fork MPM. PHP.net рекомендует использовать Pre-fork MPM, в то время как большинство экспертов по оптимизации сайтов подталкивают вас к использованию потокового Worker MPM. Удивительно, но нагрузочное тестирование показало относительно небольшую разницу в производительности — и уж точно не такую, которая подтолкнула бы вас к нерекомендуемой реализации на вашем сервере.

решение3

Worker + PHP через FastCGI, как правило, работают хорошо, исторически многие советовали не использовать mod_php с любым потоковым MPM (из-за некоторых сторонних библиотек, которые не очень хорошо с ним работали), использование FastCGI по сути «отсоединяет» PHP от веб-сервера, избегая этой проблемы.

Еще одним плюсом является то, что теперь размер потока/процесса Apache меньше, поэтому вы можете использовать больше потоков/процессов для веб-сервера (обслуживающего статический контент) и иметь несколько процессов PHP, выполняющих динамические части сайта.

Связанный контент