SCROLL
Среднее время на прочтение: 1 мин.

Настройка pm.max_children для PHP-FPM

pm.max_children — это ключевой параметр в конфигурации PHP-FPM, который определяет максимальное количество одновременно работающих дочерних процессов для обработки входящих запросов. Каждый процесс обрабатывает один запрос, поэтому значение этого параметра напрямую влияет на производительность сервера.

Когда ваш сайт или приложение начинает получать все больше трафика, вы можете столкнуться с предупреждением в логах ошибок PHP-FPM:

V0FSTklORyUzQSUyMCU1QnBvb2wlMjB3d3clNUQlMjBzZXJ2ZXIlMjByZWFjaGVkJTIwcG0ubWF4X2NoaWxkcmVuJTIwc2V0dGluZyUyMCg1KSUyQyUyMGNvbnNpZGVyJTIwcmFpc2luZyUyMGl0

Это сообщение указывает на то, что количество одновременных запросов превысило текущее значение параметра pm.max_children. Хотя такие предупреждения не всегда означают серьезные проблемы, их нельзя игнорировать, особенно если трафик продолжает расти.

В этой статье мы рассмотрим, как найти оптимальное значение pm.max_children и других связанных с ним настройках PHP-FPM, чтобы обеспечить стабильную работу сервера.

Для расчета оптимального значения pm.max_children необходимо учитывать объем доступной оперативной памяти (RAM) на вашем сервере и среднее потребление памяти одним процессом PHP-FPM.

Все ниже расчеты будут производится из расчета что на сервере установлено 4 ГБ оперативной памяти.

Шаг 1: Проверка использования памяти процессами PHP-FPM

JUQwJUE3JUQxJTgyJUQwJUJFJUQwJUIxJUQxJThCJTIwJUQxJTgzJUQwJUI3JUQwJUJEJUQwJUIwJUQxJTgyJUQxJThDJTJDJTIwJUQxJTgxJUQwJUJBJUQwJUJFJUQwJUJCJUQxJThDJUQwJUJBJUQwJUJFJTIwJUQwJUJGJUQwJUIwJUQwJUJDJUQxJThGJUQxJTgyJUQwJUI4JTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQxJTgzJUQwJUI1JUQxJTgyJTIwJUQwJUJBJUQwJUIwJUQwJUI2JUQwJUI0JUQxJThCJUQwJUI5JTIwJUQwJUJGJUQxJTgwJUQwJUJFJUQxJTg2JUQwJUI1JUQxJTgxJUQxJTgxJTIwUEhQLUZQTSUyQyUyMCVEMCVCMiVEMSU4QiVEMCVCRiVEMCVCRSVEMCVCQiVEMCVCRCVEMCVCOCVEMCVCQyUyMCVEMSU4MSVEMCVCQiVEMCVCNSVEMCVCNCVEMSU4MyVEMSU4RSVEMSU4OSVEMSU4MyVEMSU4RSUyMCVEMCVCQSVEMCVCRSVEMCVCQyVEMCVCMCVEMCVCRCVEMCVCNCVEMSU4MyUzQQ==

cHMlMjAtQyUyMHBocC1mcG04LjIlMjAtbyUyMHJzcyUzRA==

JUQwJTk3JUQwJUI0JUQwJUI1JUQxJTgxJUQxJThDJTNB

  • -C php-fpm8.2 — фильтрует процессы по имени (замените версию PHP на вашу).
  • -o rss= — выводит объем физической памяти (в килобайтах), используемой каждым процессом.

Пример вывода:

MTIzNDU2
234567
345678
456789

JUQwJUE3JUQxJTgyJUQwJUJFJUQwJUIxJUQxJThCJTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTgxJUQxJTg3JUQwJUI4JUQxJTgyJUQwJUIwJUQxJTgyJUQxJThDJTIwJUQxJTgxJUQxJTgwJUQwJUI1JUQwJUI0JUQwJUJEJUQwJUI1JUQwJUI1JTIwJUQwJUI3JUQwJUJEJUQwJUIwJUQxJTg3JUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTJDJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQxJTgzJUQwJUI5JUQxJTgyJUQwJUI1JTIwJUQwJUJBJUQwJUJFJUQwJUJDJUQwJUIwJUQwJUJEJUQwJUI0JUQxJTgzJTNB

ps -C php-fpm8.2 -o rss= | awk '{ sum += $1; count++ } END { if (count > 0) print sum / count }'

Например, если среднее значение равно 40147.5 KB, это означает, что каждый процесс PHP-FPM использует около 40 МБ памяти.

Шаг 2: Расчет доступной памяти для PHP

JUQwJTlEJUQwJUI1JTIwJUQwJUIyJUQxJTgxJUQxJThGJTIwJUQwJUI0JUQwJUJFJUQxJTgxJUQxJTgyJUQxJTgzJUQwJUJGJUQwJUJEJUQwJUIwJUQxJThGJTIwJUQwJUJGJUQwJUIwJUQwJUJDJUQxJThGJUQxJTgyJUQxJThDJTIwJUQwJUI0JUQwJUJFJUQwJUJCJUQwJUI2JUQwJUJEJUQwJUIwJTIwJUQwJUIxJUQxJThCJUQxJTgyJUQxJThDJTIwJUQwJUIyJUQxJThCJUQwJUI0JUQwJUI1JUQwJUJCJUQwJUI1JUQwJUJEJUQwJUIwJTIwJUQwJUJGJUQwJUJFJUQwJUI0JTIwUEhQLUZQTS4lMjAlRDAlOUQlRDAlQjUlRDAlQkUlRDAlQjElRDElODUlRDAlQkUlRDAlQjQlRDAlQjglRDAlQkMlRDAlQkUlMjAlRDAlQkUlRDElODElRDElODIlRDAlQjAlRDAlQjIlRDAlQjglRDElODIlRDElOEMlMjAlRDElODAlRDAlQjUlRDAlQjclRDAlQjUlRDElODAlRDAlQjIlMjAlRDAlQjQlRDAlQkIlRDElOEYlMjAlRDAlQjQlRDElODAlRDElODMlRDAlQjMlRDAlQjglRDElODUlMjAlRDElODElRDAlQjglRDElODElRDElODIlRDAlQjUlRDAlQkMlRDAlQkQlRDElOEIlRDElODUlMjAlRDAlQkYlRDElODAlRDAlQkUlRDElODYlRDAlQjUlRDElODElRDElODElRDAlQkUlRDAlQjIlMjAlRDAlQjglMjAlRDAlQjQlRDAlQkUlRDAlQjElRDAlQjAlRDAlQjIlRDAlQjglRDElODIlRDElOEMlMjAlRDAlQjElRDElODMlRDElODQlRDAlQjUlRDElODAlMjAlRDAlQjQlRDAlQkIlRDElOEYlMjAlRDAlQkYlRDElODAlRDAlQjUlRDAlQjQlRDAlQkUlRDElODIlRDAlQjIlRDElODAlRDAlQjAlRDElODklRDAlQjUlRDAlQkQlRDAlQjglRDElOEYlMjAlRDAlQkYlRDAlQjUlRDElODAlRDAlQjUlRDAlQjMlRDElODAlRDElODMlRDAlQjclRDAlQkElRDAlQjglMjAlRDElODElRDAlQjglRDElODElRDElODIlRDAlQjUlRDAlQkMlRDElOEIu

JUQwJUE0JUQwJUJFJUQxJTgwJUQwJUJDJUQxJTgzJUQwJUJCJUQwJUIwJTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTg3JUQwJUI1JUQxJTgyJUQwJUIwJTNB

JTVCJUQwJTk0JUQwJUJFJUQxJTgxJUQxJTgyJUQxJTgzJUQwJUJGJUQwJUJEJUQwJUIwJUQxJThGJTIwJUQwJUJGJUQwJUIwJUQwJUJDJUQxJThGJUQxJTgyJUQxJThDJTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwUEhQJTVEJTIwJTNEJTIwJTVCJUQwJTkyJUQxJTgxJUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQwJUI0JUQwJUJFJUQxJTgxJUQxJTgyJUQxJTgzJUQwJUJGJUQwJUJEJUQwJUJFJTIwJUQwJUJGJUQwJUIwJUQwJUJDJUQxJThGJUQxJTgyJUQwJUI4JTVEJTIwLSUyMCU1QiVEMCU5NyVEMCVCMCVEMSU4MCVEMCVCNSVEMCVCNyVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCOCVEMSU4MCVEMCVCRSVEMCVCMiVEMCVCMCVEMCVCRCVEMCVCRSUyMCVEMCVCRiVEMCVCMCVEMCVCQyVEMSU4RiVEMSU4MiVEMCVCOCU1RCUyMC0lMjAlNUIxMCUyNSUyMCVEMCVCMSVEMSU4MyVEMSU4NCVEMCVCNSVEMSU4MCU1RA==

Пример расчета:

  • Всего доступно памяти : 4 ГБ = 4096 МБ = 4096000 КБ.
  • Зарезервировано памяти : 1 ГБ = 1024 МБ = 1024000 КБ (резерв для ОС и других служб).
  • Буфер (10%) : 0.4 ГБ = 409.6 МБ = 409600 КБ.

Подставляем значения:

JUQwJTk0JUQwJUJFJUQxJTgxJUQxJTgyJUQxJTgzJUQwJUJGJUQwJUJEJUQwJUIwJUQxJThGJTIwJUQwJUJGJUQwJUIwJUQwJUJDJUQxJThGJUQxJTgyJUQxJThDJTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwUEhQJTIwJTNEJTIwNDA5NjAwMCUyMCVEMCU5QSVEMCU5MSUyMC0lMjAxMDI0MDAwJTIwJUQwJTlBJUQwJTkxJTIwLSUyMDQwOTYwMCUyMCVEMCU5QSVEMCU5MSUyMCUzRCUyMDI2NjI0MDAlMjAlRDAlOUElRDAlOTE=

Шаг 3: Расчет максимального количества процессов

JUQwJUEyJUQwJUI1JUQwJUJGJUQwJUI1JUQxJTgwJUQxJThDJTJDJTIwJUQwJUI3JUQwJUJEJUQwJUIwJUQxJThGJTIwJUQwJUI0JUQwJUJFJUQxJTgxJUQxJTgyJUQxJTgzJUQwJUJGJUQwJUJEJUQxJTgzJUQxJThFJTIwJUQwJUJGJUQwJUIwJUQwJUJDJUQxJThGJUQxJTgyJUQxJThDJTIwJUQwJUI4JTIwJUQxJTgxJUQxJTgwJUQwJUI1JUQwJUI0JUQwJUJEJUQwJUI1JUQwJUI1JTIwJUQwJUJGJUQwJUJFJUQxJTgyJUQxJTgwJUQwJUI1JUQwJUIxJUQwJUJCJUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQwJUJGJUQwJUIwJUQwJUJDJUQxJThGJUQxJTgyJUQwJUI4JTIwJUQwJUJFJUQwJUI0JUQwJUJEJUQwJUI4JUQwJUJDJTIwJUQwJUJGJUQxJTgwJUQwJUJFJUQxJTg2JUQwJUI1JUQxJTgxJUQxJTgxJUQwJUJFJUQwJUJDJTJDJTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTgxJUQxJTg3JUQwJUI4JUQxJTgyJUQwJUIwJUQxJTgyJUQxJThDJTIwcG0ubWF4X2NoaWxkcmVuJTNB

pm.max_children = [Доступная память для PHP] / [Средний размер процесса]

Пример:

  • Среднее использование памяти одним процессом : 40147.5 КБ (40 МБ).
  • Доступная память для PHP : 2662400 КБ.
cG0ubWF4X2NoaWxkcmVuJTIwJTNEJTIwMjY2MjQwMCUyMCVEMCU5QSVEMCU5MSUyMCUyRiUyMDQwMTQ3LjUlMjAlRDAlOUElRDAlOTElMjAlRTIlODklODglMjA2Ng==

JUQwJTk0JUQwJUJCJUQxJThGJTIwJUQwJUIxJUQwJUJFJUQwJUJCJUQxJThDJUQxJTg4JUQwJUI1JUQwJUI5JTIwJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUIxJUQwJUI4JUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI4JTIwJUQxJTgwJUQwJUI1JUQwJUJBJUQwJUJFJUQwJUJDJUQwJUI1JUQwJUJEJUQwJUI0JUQxJTgzJUQwJUI1JUQxJTgyJUQxJTgxJUQxJThGJTIwJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUIyJUQwJUI4JUQxJTgyJUQxJThDJTIwJUQwJUI3JUQwJUIwJUQwJUJGJUQwJUIwJUQxJTgxJTIwJUQwJUI4JTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUI4JUQxJTgyJUQxJThDJTIwJUQwJUI3JUQwJUJEJUQwJUIwJUQxJTg3JUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwcG0ubWF4X2NoaWxkcmVuJTIwJUQwJUJEJUQwJUI1JUQwJUJDJUQwJUJEJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUJEJUQwJUI4JUQwJUI2JUQwJUI1JTJDJTIwJUQwJUJEJUQwJUIwJUQwJUJGJUQxJTgwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJTgwJTJDJTIwNTAu

Шаг 4: Настройка связанных параметров

JUQwJTlGJUQwJUJFJUQxJTgxJUQwJUJCJUQwJUI1JTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQxJTg3JUQwJUI1JUQxJTgyJUQwJUIwJTIwcG0ubWF4X2NoaWxkcmVuJTJDJTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI5JUQxJTgyJUQwJUI1JTIwJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJCJUQxJThDJUQwJUJEJUQxJThCJUQwJUI1JTIwJUQwJUJGJUQwJUIwJUQxJTgwJUQwJUIwJUQwJUJDJUQwJUI1JUQxJTgyJUQxJTgwJUQxJThCJTNB

/etc/php/8.2/fpm/pool.d/www.conf
cG0ubWF4X2NoaWxkcmVuJTIwJTNEJTIwNTA=
pm.start_servers = 13  # 25% от max_children
cG0ubWluX3NwYXJlX3NlcnZlcnMlMjAlM0QlMjAxMyUyMCUyMCUyMyUyMDI1JTI1JTIwJUQwJUJFJUQxJTgyJTIwbWF4X2NoaWxkcmVu
pm.max_spare_servers = 38  # 75% от max_children

Заключение

JUQwJTlGJUQxJTgwJUQwJUIwJUQwJUIyJUQwJUI4JUQwJUJCJUQxJThDJUQwJUJEJUQwJUIwJUQxJThGJTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI5JUQwJUJBJUQwJUIwJTIwJUQwJUJGJUQwJUIwJUQxJTgwJUQwJUIwJUQwJUJDJUQwJUI1JUQxJTgyJUQxJTgwJUQwJUJFJUQwJUIyJTIwUEhQLUZQTSUyQyUyMCVEMSU4MiVEMCVCMCVEMCVCQSVEMCVCOCVEMSU4NSUyMCVEMCVCQSVEMCVCMCVEMCVCQSUyMHBtLm1heF9jaGlsZHJlbiUyQyUyMCVEMCVCRiVEMCVCRSVEMCVCNyVEMCVCMiVEMCVCRSVEMCVCQiVEMSU4RiVEMCVCNSVEMSU4MiUyMCVEMCVCOCVEMCVCNyVEMCVCMSVEMCVCNSVEMCVCNiVEMCVCMCVEMSU4MiVEMSU4QyUyMCVEMCVCRiVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCMyVEMSU4MCVEMSU4MyVEMCVCNyVEMCVCQSVEMCVCOCUyMCVEMSU4MSVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCNSVEMSU4MCVEMCVCMCUyMCVEMCVCOCUyMCVEMCVCRSVEMCVCMSVEMCVCNSVEMSU4MSVEMCVCRiVEMCVCNSVEMSU4NyVEMCVCOCVEMCVCMiVEMCVCMCVEMCVCNSVEMSU4MiUyMCVEMSU4MSVEMSU4MiVEMCVCMCVEMCVCMSVEMCVCOCVEMCVCQiVEMSU4QyVEMCVCRCVEMSU4MyVEMSU4RSUyMCVEMSU4MCVEMCVCMCVEMCVCMSVEMCVCRSVEMSU4MiVEMSU4MyUyMCVEMCVCMiVEMCVCMCVEMSU4OCVEMCVCNSVEMCVCMyVEMCVCRSUyMCVEMSU4MSVEMCVCMCVEMCVCOSVEMSU4MiVEMCVCMCUyMCVEMCVCOCVEMCVCQiVEMCVCOCUyMCVEMCVCRiVEMSU4MCVEMCVCOCVEMCVCQiVEMCVCRSVEMCVCNiVEMCVCNSVEMCVCRCVEMCVCOCVEMSU4Ri4lMjAlRDAlOTIlRDAlQjAlRDAlQjYlRDAlQkQlRDAlQkUlMjAlRDAlQkYlRDAlQkUlRDAlQkMlRDAlQkQlRDAlQjglRDElODIlRDElOEMlMkMlMjAlRDElODclRDElODIlRDAlQkUlMjAlRDElODAlRDAlQjAlRDElODElRDElODclRDAlQjUlRDElODIlMjAlRDAlQjQlRDAlQkUlRDAlQkIlRDAlQjYlRDAlQjUlRDAlQkQlMjAlRDAlQkUlRDElODElRDAlQkQlRDAlQkUlRDAlQjIlRDElOEIlRDAlQjIlRDAlQjAlRDElODIlRDElOEMlRDElODElRDElOEYlMjAlRDAlQkQlRDAlQjAlMjAlRDElODAlRDAlQjUlRDAlQjAlRDAlQkIlRDElOEMlRDAlQkQlRDAlQkUlRDAlQkMlMjAlRDAlQjglRDElODElRDAlQkYlRDAlQkUlRDAlQkIlRDElOEMlRDAlQjclRDAlQkUlRDAlQjIlRDAlQjAlRDAlQkQlRDAlQjglRDAlQjglMjAlRDAlQkYlRDAlQjAlRDAlQkMlRDElOEYlRDElODIlRDAlQjglMjAlRDAlQkYlRDElODAlRDAlQkUlRDElODYlRDAlQjUlRDElODElRDElODElRDAlQjAlRDAlQkMlRDAlQjglMjBQSFAtRlBNJTIwJUQwJUI4JTIwJUQwJUI0JUQwJUJFJUQxJTgxJUQxJTgyJUQxJTgzJUQwJUJGJUQwJUJEJUQxJThCJUQxJTg1JTIwJUQxJTgxJUQwJUI4JUQxJTgxJUQxJTgyJUQwJUI1JUQwJUJDJUQwJUJEJUQxJThCJUQxJTg1JTIwJUQxJTgwJUQwJUI1JUQxJTgxJUQxJTgzJUQxJTgwJUQxJTgxJUQwJUIwJUQxJTg1Lg==

Для расчета можно так же воспользоваться онлайн-калькулятором: PHP-FPM Calculator.
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.