Apache случайно останавливается ночью без ошибок в логах
У меня есть сервер на AWS, который был стабильным в течение многих лет. Это работает Apache 2.2.22 на Ubuntu 12.04.5 LTS. Я регулярно запускаю обновления безопасности в начале месяца.
Недавно Apache прекратил обслуживать запросы около полуночи, а иногда и в более позднее время рано утром (2-4 часа утра по центральному). Для нас это период низкого использования, но у нас все еще есть постоянный поток запросов. Наша дневная активность намного выше, и она никогда не падает в течение дня (по крайней мере, пока). До сих пор он всегда появляется примерно через 10 минут или около того и всегда возвращается к нормальной жизни по утрам. Из-за времени проблемы, я не подозреваю, что это связано с MaxClients, как предлагают несколько других потоков.
Я ничего не вижу ни в одном из журналов ошибок apache (у нас есть около 10 виртуальных хостов), ни dmesg, ни syslog. Фактически, я читаю каждый журнал в / var / log этим утром. На момент выпуска я ничего не видел.
Я смог поймать его, когда он не работает из-за уведомления монитора сайта. В течение этого времени я могу убедиться, что apache не обслуживает запросы. Я могу подключиться к серверу, хотя. Я подозревал проблемы с сетью, но странно, что один порт в порядке, а другой - нет. Я был в состоянии подтвердить, что apache не будет обслуживать запросы от localhost на этом сервере. Так что, похоже, это не аппаратно.
Перезапуск службы apache приводит к резервному копированию сайтов, но только на несколько минут. Я слежу за бревнами в прямом эфире, когда он упал и все еще ничего. Ни одна вещь не отображается ни в одном журнале на момент выпуска. Перезагрузка всегда, кажется, исправляет это (по крайней мере, еще 24 часа, а иногда и больше).
Поддержка Amazon не видит ничего плохого в работе сервера. Я подозреваю, что либо Apache не работает, и перезапуск службы не является чистым. Или что-то происходит на уровне ядра / сети ОС. И, опять же, это всегда происходит при низкой загрузке процессора. Память выглядит хорошо. Ни один из "обычных подозреваемых" не происходит. Просто тихо перестает работать.
Учитывая отсутствие информации с сервера, я понятия не имею, что еще искать. Я склоняюсь к перестройке сервера на следующей неделе, но очень хотел бы выяснить это.
Может быть, есть что-то еще, что я должен посмотреть во время проблемы. Кроме того, если есть какие-либо журналы, которые я "включаю", чтобы получить больше информации, дайте мне знать. В настоящее время у меня нет журналов, которые я могу публиковать, которые полезны. Все это кажется мне сумасшедшим, потому что я привык к каким-либо ошибкам при регистрации, особенно если это apache или ядро (мы давние друзья).
1 ответ
Я бы посоветовал в следующий раз, когда вы запустите его, запустите стрейс, чтобы после его смерти вы могли выяснить, какие звонки происходили последними, прежде чем они перестали работать. Вы можете использовать следующую команду после ее запуска, чтобы убедиться, что вы подключаетесь к главному процессу и всем его дочерним элементам, а также любым новым, которые разветвляются.
pidlist=''; for pid in `ps ax | grep httpd | awk '{print $1}'`; do pidlist="$pidlist -p $pid"; done; strace -tt -F -f $pidlist 2>&1 |tee /root/apache_strace.out
Я не знаю, если в вашем дистрибутиве процесс Apache называется httpd или что-то еще (например, apache или apache2), но если это не httpd, то поменяйте правильное имя в приведенной выше команде.