У меня есть клиентское приложение, на котором запущен Apache, и я проснулся сегодня и увидел, что его средняя загрузка составляет 11,2 (!). Было запущено множество процессов httpd, которые, по-видимому, работали часами и поглощали весь процессор.
После перезапуска Apache моя средняя загрузка упала до 0,4, и проблема, похоже, исчезла.
Теперь, если мой таймаут keepAlive равен 5, как эти процессы httpd работают так долго? Я действительно не знаю, как диагностировать то, что они делают и почему.
Похоже, что в краткосрочной перспективе он исправился, но это довольно тревожно, потому что я не знаю, когда он вернется, ха-ха.
KeepAlive и KeepAliveTimeout определяют, как долго сервер будет поддерживать простаивающее соединение, чтобы ожидать другого запроса от клиента в этом соединении. Нет причин, по которым процессы должны использовать время ЦП во время ожидания.
Один процесс apache может обслуживать множество подключений, поэтому высокая загрузка процессора сама по себе не означает, что он использовался для одного запроса, хотя процессы перезапускаются после определенного количества запросов, которые они обслужили.
Вы можете найти подсказки в журналах сервера.
Если это произойдет снова, попробуйте узнать, что делают процессы. Используйте strace для одного из процессов или подключитесь с помощью gdb и используйте команду «where».