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

ошибка php [пул www] кажется занятым (вам может потребоваться увеличить pm.start_servers или pm.min / max_spare_servers)

Я использую ubuntu 15.04 на своем выделенном сервере с 40 ядрами процессора и 160 ГБ оперативной памяти с одним запущенным сайтом WordPress с интенсивным трафиком. Я использую Nginx в качестве веб-сервера и лак в качестве кеш-сервера. Моя настройка php5-fpm.conf:

listen = 127.0.0.1:7654
pm = dynamic
pm.max_children = 500
pm.start_servers = 80
pm.min_spare_servers = 20
pm.max_spare_servers = 160
pm.max_requests = 1000

Но он все еще показывает ошибку:

[pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 17 idle, and 92 total children

WARNING: [pool www] server reached pm.max_children setting (200), consider raising it

Я попытался увеличить числа, но все равно не повезло. Память, используемая одним ребенком, близка ~ 75 МБ. Как я могу определить лучшую конфигурацию для моего php?

выделенный сервер с 40 ядрами процессора и 160 ГБ ОЗУ с одним запущенным сайтом WordPress с интенсивным трафиком

Это действительно странная конфигурация для такого сервиса.

Мы не можем посоветовать, как решить проблему, потому что вы не сообщили нам, в чем проблема. Скорее всего, компетентному инженеру потребуется как минимум день, чтобы собрать достаточно данных для определения узких мест, а затем больше времени, чтобы решить, как лучше всего устранить ограничение. Публикация такого объема исследований здесь в качестве вопроса было бы не по теме.

Планирование мощности не по теме.

Как я могу определить лучшую конфигурацию для моего php?

Узнайте об управлении производительностью и настройке. Делайте обоснованные предположения относительно причины. Применяйте пошаговые изменения. Измерьте воздействие.

В общем, я нашел лучшее решение для использования php-fpm в режиме "ondemand". Кажется, что это намного более эффективно с точки зрения памяти, менее подвержено утечкам памяти и масштабируется. Предлагаю следующие строки:

pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s
pm.max_requests = 500

max_children потребуется настроить для вашей среды. Это очень сильно связано с памятью, например если процесс FPM будет потреблять 64 МБ, а у вас есть только 2 ГБ памяти, вы получите только процессы со скоростью 20-25 кадров в минуту, прежде чем начнете испытывать ограничения по памяти.

Поэтому рассчитайте это значение на основе вашей памяти, оставив место для ОС и других служб, если это не выделенный сервер приложений.