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

Настройка Apache Worker MPM / PHP-FPM

У меня есть VPS под управлением CentOS 6.5, Apache 2.2, PHP-FPM v5.4 и MySQL 5.5. Я пользуюсь APC и Memcache. VPS имеет 8 ядер и 8 ГБ оперативной памяти. Я использую сайт со средним объемом (15 000 пользователей в день, максимум 1200 в час). На VPS также размещается ряд других сайтов, но они имеют меньший объем. Чтобы было понятно, проблем с производительностью на сайтах нет. Каждый из них был хорошо оптимизирован и загружается в течение 1,5 с даже во время пикового трафика.

Хотя производительность хорошая, меня беспокоит, что Apache не оптимизирован. Я запустил Apache Benchmark следующим образом:

ab -n 1000 -c 100 https://www.example.com/somepage.html

Somepage.html весит всего 116 байт, но этот тест показал только 183 запроса в секунду. Сайт среднего объема работает на Joomla 3.3 и показывает неприятные 3 запроса в секунду. Конечно, этот сервер может работать лучше. Я также понимаю, что Joomla может быть не оптимальной платформой, но я все равно могу получать 30-50 запросов в секунду. Я могу сделать около 35 на префорке, настройке mod_php.

У меня действительно есть опыт работы только с mod_php и Prefork MPM. Я недавно подготовил этот новый сервер и прочитал о преимуществах Worker MPM и PHP-FPM, поэтому решил попробовать.

Вот мои конфигурации

Рабочий МПМ

<IfModule worker.c>
  StartServers         4
  MaxClients         300
  MinSpareThreads     25
  MaxSpareThreads     75
  ThreadsPerChild     25
  MaxRequestsPerChild  0
</IfModule>

PHP-FPM

pm = dynamic
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 10000

Выполнив следующие две команды, я могу увидеть, что среднее использование частной памяти каждым процессом Apache и PHP составляет 330 КБ и 29 КБ соответственно.

ps -ef | grep httpd | grep -v ^root | awk '{ print $2 '} | xargs pmap -d | grep ^mapped: | awk '{ print $4 }' | cut -dK -f1 | awk '{ SUM += $1} END { print SUM/NR }'
ps -ef | grep php-fpm | grep -v ^root | awk '{ print $2 '} | xargs pmap -d | grep ^mapped: | awk '{ print $4 }' | cut -dK -f1 | awk '{ SUM += $1} END { print SUM/NR }'

Я немного не знаю, как сообщить об использовании системной памяти. HTOP сообщает о 1650/7839, тогда как free -m сообщает об использовании 7374/7839; однако, 5115 кэшируется, что, я думаю, может быть связано с кешем памяти.

Куда мне идти дальше? Если мне нужно опубликовать больше конфигураций, я буду рад это сделать.

Спасибо за вашу помощь!