Я запускаю Apache, и время от времени (кажется, раз в два дня) количество процессов apache значительно возрастает, и каждый из них занимает около 75% использования процессора.
Я хотел бы иметь возможность отслеживать эти процессы до фактического виртуального хоста, который получает запросы. Какие-либо предложения?
В журнале Apache есть много отличных опций, и есть несколько хороших вариантов, которые можно попробовать, чтобы понять, что происходит. Я бы начал с %D
или %T
который регистрирует время, затраченное Apache на выполнение запроса, исходя из предположения, что все, что занимает все время процессора, также требует больше «реального» времени для выполнения.
Если вы используете Prefork MPM, вы можете отформатировать свои журналы, включив %P
. Это будет регистрировать идентификатор процесса apache, который фактически обрабатывает запрос, чтобы вы могли сопоставить запрос с вашим top
вывод. Идентификаторы процессов будут повторно использоваться довольно быстро (из-за нескольких запросов на каждого дочернего элемента), поэтому вам все равно нужно будет проверять временную метку в журнале, но вы сможете найти конкретный запрос, который процесс apache обрабатывал в то время.
Если вы используете Worker, вы можете попробовать %{tid}P
и сопоставив это с top -H
который печатает идентификатор потока в столбце PID.