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

Процессы Apache зависают и попадают в MaxClients

Я использую довольно загруженный веб-сервер (выделенный Apache / PHP), и, хотя большую часть времени он работает нормально, примерно раз в день он блокирует и отклоняет любые новые соединения. Перезапуск Apache устраняет проблему. Я ловил это несколько раз прямо перед этой блокировкой, и Apache Status показывает все W (отправка ответа) для каждого запроса. Последняя ошибка в http-errors.log заключается в том, что MaxClients был поражен (что имеет смысл, потому что ни один запрос не возвращается).

У вас есть идеи, почему запрос Apache может никогда не возвращаться, или какие-нибудь мысли о том, что здесь может происходить?

Спасибо!

Похоже, у вас ужасный синдром стойкого куста (сокращенно PBS) ... что означает, что вы застряли на слишком большом количестве W (отправка ответа). К счастью, есть очень простое решение. Причина может заключаться в том, что ваш сценарий выполняет длинный запрос, который никогда не завершается. Ознакомьтесь с этой статьей, в ней объясняется, как исправить диагностику и отследить причину зависания соединений в статусе "отправка ответа". http://techmythsworld.blogspot.com/2011/11/solving-httpd-maxclients-and-modstatus.html

Короче говоря, вам нужно сделать следующее: 1. Найдите сценарий, который застревает в W, и все, что в него отправляется (это могут быть очень уникальные переменные, которые вызывают его застревание.

  1. Убедитесь, что вы можете воссоздать ситуацию, отправив вызывающие переменные в сценарий. Вы увидите, что с вашего ip-адреса появится соединение, которое останется в W.

  2. Отслеживайте, есть ли у вас цикл или запрос к базе данных, который не заканчивается.

  3. Исправьте скрипт. и повторно разместите переменные, вы должны увидеть, что застрявший в W для вашего ip-адреса исчез.

PS. Вы должны перезапускать веб-сервер при каждом тесте, чтобы сбросить соединение (команда "service httpd restart" должна выполнить

Я также видел эту проблему, когда PHP-FPM не работал. Сайты были недоступны, а процессы остались в статусе «W». Перезапуск PHP-FPM решил проблему.