#Что означает ошибка
server reached pm.max_children
Предупреждение значит, что все процессы заняты. Найдите медленные запросы, увеличьте max_children при наличии памяти и включите кэширование.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Все процессы заняты | Прочитайте относящуюся к этому компоненту запись в журнале до изменения конфигурации. | Увеличьте. |
| Медленные запросы | Прочитайте относящуюся к этому компоненту запись в журнале до изменения конфигурации. | Оптимизируйте. |
| Ботов много | Прочитайте относящуюся к этому компоненту запись в журнале до изменения конфигурации. | Ограничьте. |
| Утечки памяти | Проверьте фактическое потребление памяти и наличие места для временных файлов в момент сбоя. | pm.max_requests. |
#Пошаговое решение
- Читайте логОткройте журнал соответствующего пула PHP-FPM и найдите строку
server reached pm.max_children settingсо временем. Запишите, сколько процессов было занято и какие страницы тогда запрашивались. В панели хостинга уточните, какая версия PHP и какой пул действительно обслуживают домен; имяphp8.3-fpmв примерах не универсально. - Найдите медленные запросыЧерез SSH посмотрите параметры реального пула:
pm,pm.max_children,pm.max_requests,pm.status_pathи журнал медленных запросов. Сравните доступную памятьfree -hи фактический расход PHP-процессов. Если каждый процесс занимает много памяти, простое увеличениеpm.max_childrenможет вызвать убийство процессов ядром. - Настройте пулЕсли рост числа занятых процессов вызван конкретным SQL-запросом, внешним API или зависшим скриптом, исправляйте его или включите временный slowlog с ограниченным доступом. Проверьте журнал MySQL и приложение; системное замедление не устраняется бесконечным увеличением параллелизма.
- Проверьте альтернативу: утечки памятиПри достаточном запасе памяти рассчитайте разумный новый лимит, сохраните копию файла пула, проверьте синтаксис PHP-FPM командой для установленной версии и перезагрузите только этот пул в окно обслуживания. Затем повторите нагрузку, измерьте очередь, ошибки 503/504 и свободную память; если стало хуже, верните прежний лимит.
#Проверка результата
Для «PHP-FPM: server reached pm.max_children и ответы 503/504» выполните штатную проверку конфигурации, затем один контрольный запрос к сервису. Сверьте его результат с журналом и убедитесь, что пользователи не получили новых ответов 4xx или 5xx после изменения.