Недавно унаследовал сервер Nginx + PHP5-FPM, и я изучаю и пытаюсь оптимизировать настройки PHP5-FPM.
Информация о сервере:
4 CPUs (8 threads)
7.5 GiB RAM
Информация о PHP5-FPM:
pm.max_children = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 3
;pm.process_idle_time = 10s;
;pm.max_requests = 500
(Я собираюсь раскомментировать строку max_requests, поскольку это рекомендуется делать.)
Когда веб-сайт находится под нагрузкой, каждый процесс PHP5-FPM имеет очень высокую загрузку ЦП, но я еще не видел, чтобы процесс превышал 1% использования ОЗУ.
Куда бы я ни посмотрел (например, Вот и Вот) говорит только об увеличении pm.max_children
ограничен оперативной памятью и не упоминает использование ЦП.
В моем случае увеличилось бы pm.max_children
увеличить или уменьшить производительность моего веб-сайта, исходя из того, что он больше связан с ЦП, чем с ОЗУ? Другими словами, как pm.max_children
увеличение ОЗУ - единственное соображение или ЦП тоже влияет?
[Edit] Не дубликат: вопрос в основном сводится к последнему предложению, которое не просить совета по планированию мощностей; он спрашивает, учитывается ли использование ЦП в настройке pm.max_children или увеличивается только ОЗУ.
С моей точки зрения, ограничение на количество детей слишком низкое. Если у вас достаточно памяти (и каждый дочерний элемент обычно потребляет только небольшое количество), количество дочерних элементов должно быть установлено как минимум на ядро * 2. Я бы рекомендовал установить max-children на 32.
Это зависит от того, что делают ваши PHP-скрипты. Но 5
действительно мало для процессов PHP. Обычно процесс PHP открывает соединение с MySQL (требует времени), ожидает, пока MySQL обработает запрос (требуется время), поэтому он не будет использовать ЦП все время, и всего с 5 процессами ЦП может простаивать в некоторые моменты, но не будет другого процесса PHP, который бы его использовал. Таким образом, вы можете смело увеличивать лимит как минимум до 20-30 (или больше, в зависимости от того, сколько запросов в секунду вы получите).
Касательно вопроса об использовании ЦП. Наличие большего количества активных PHP-процессов не приведет к увеличению загрузки ЦП. Вся доступная мощность процессора будет разделена между запущенными процессами.