PHP-FPM Linux

PHP-FPM: slow log и request_terminate_timeout

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

PHP-FPM slowlog показывает стек выполнения медленного запроса, а request_terminate_timeout ограничивает время работы обработчика. Сопоставьте URI, timestamp и PID зависшего запроса, включите request_slowlog_timeout и slowlog в конкретном пуле, затем найдите узкий участок PHP или базы.

В этой статье
  1. Что означает сообщение
  2. Как отличить причины
  3. Пошаговое решение
  4. Что важно перед исправлением

#Что означает сообщение

Сообщение
Скрипты обрываются

PHP-FPM slowlog показывает стек выполнения медленного запроса, а request_terminate_timeout ограничивает время работы обработчика. Увеличение лимита не устраняет тяжёлый SQL-запрос.

#Как отличить причины

Возможная причинаКак узнатьЧто делать
Медленный скриптВ slowlog проверьте стек PHP для конкретного зависшего URI и временную метку события.. Важно сопоставить проверку с исходным симптомом, а не с догадкой.Оптимизируйте медленный участок скрипта или запроса к базе, не скрывая проблему бесконечным таймаутом.. Для проверки результата повторите только прежнее действие.
ТаймаутВ PHP-FPM сравните request_terminate_timeout, время slowlog и продолжительность обработки одного запроса.. Учитывайте версию PHP-FPM и условия сбоя.Найдите причину медленного PHP/SQL и только после этого подберите обоснованный таймаут пула.. Изменения вносите по одному, с возможностью возврата.
БазаПри диагностике «PHP-FPM: slow log и request_terminate_timeout» уточните, какой файл, каталог или запись вызывает отказ, и сравните время её изменения с началом ошибки. Учитывайте версию PHP-FPM и условия сбоя.Для случая «PHP-FPM: slow log и request_terminate_timeout» исправляйте целевой файл или запись и оставляйте исходник на случай отката. Для проверки результата повторите только прежнее действие.
Внешний APIСравните момент появления признака «Внешний API» с тем, когда ранее работала нужная функция. Учитывайте версию PHP-FPM и условия сбоя.Исправляйте только подтверждённый фактор «Внешний API», сохраняя прежние настройки. Изменения вносите по одному, с возможностью возврата.

#Пошаговое решение

  1. Зафиксируйте ошибку и проверьте условияПри жалобе на таймаут откройте журнал пула PHP-FPM и найдите точное сообщение и длительность выполнения. Сравните его с кодом ответа Nginx/Apache и временем в браузере: request_slowlog_timeout лишь записывает трассировку, а request_terminate_timeout может завершить выполняющийся запрос.
  2. Выполните основную проверку и исправлениеПроверьте обе директивы для нужного пула, а также max_execution_time действующего веб-PHP. Если в slowlog виден зависший запрос к БД или внешнему сервису, устраняйте блокировку/сетевой таймаут в приложении прежде, чем увеличивать ограничения.
  3. Исключите другие подтверждённые причиныПри необходимости временно включите журнал медленных вызовов с разумным порогом и защищённым местом хранения. Не ставьте request_terminate_timeout = 0 без анализа: зависший процесс тогда может бесконечно занимать рабочий слот. Внешние загрузки и большие задания предпочтительно выносить из HTTP-запроса.
  4. Проверьте, действительно ли проблема решенаСохраните копию настроек, проверьте синтаксис вашей версии PHP-FPM и согласованно примените изменение к нужному пулу. Повторите проблемную операцию и проверьте, исчезла ли причина замедления, а не только сообщение в журнале; сравните число занятых процессов и ошибки 502/504.

#Что важно перед исправлением

Не включайте подробный slowlog с чувствительными данными в публичный каталог и не задавайте безграничный таймаут. В рабочей системе отслеживайте нагрузку и число занятых процессов.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.