После Вас говорящий, какие модули Вы имели, я заметил, что Вы сказали, что EAccelerator, который имеет ошибку (Ссылка средства отслеживания ошибки здесь), который вызывает Apache к тупику в никогда конечном цикле, и приносят сервер к близкому бездействию, попытайтесь отключить это и посмотрите то, что происходит.
Вы видите много запросов на POST /wordpress/wp-admin/admin-ajax.php
в проблемные времена? Раз так затем это могло быть вызвано или передающим спаммером, пробующим к грубой силе что-то преднамеренной попыткой DoS, или просто потому что сайт становится отправленным где-нибудь занятый время от времени (Ваши журналы показывают много запросов, прибывающих из того же удаленного ссылающегося домена?).
Это могла также быть проблема блокировки базы данных, т.е. один запрос попросил, чтобы долгая операция, которая будет выполнена с полным deny-read-until-done, соединила таблицу, к которой часто получают доступ, и другие запросы просто застревают, ожидая блокировки, которая будет выпущена (который может произойти естественно, или в результате Вас уничтожающий Apache и поэтому соединение, которое содержит блокировку (блокировки). Если сайт является достаточно оживленным затем, это может создать значительную загрузку, как много процессов Apache создается, которые затем находятся, используя память, пока они не могут продолжить мимо блокировки - если Ваша конфигурация Apache такова, что относительно неограниченное количество дочерних процессов может быть создано затем, система могла легко начать перегружать подкачку в этой точке.
Чтобы видеть, вызывается ли загрузка использованием ЦП, IO из-за доступа DB и такого, или IO должный подкачать перегрузку, необходимо будет исследовать вывод htop (или просто вершина), свободный, и другая обычная системная нагрузка, контролирующая utils. Это может дать больше ключа к разгадке как, туда, где корень проблемы мог бы быть найден.
Вы могли попытаться установить значение TimeOut в апаче к чему-то довольно драконовскому как 20 секунд. Это должно закончить соединение, если определенные действия занимают больше времени для завершения. Это - вид сглаживания проблемы, вместо того, чтобы решить его. Это должно, вероятно, использоваться, чтобы отладить, если проблема происходит из-за чего-то занимание слишком много времени, а не как конечное решение.
Ваши Сценарии PHP делают какие-либо запросы к базе данных? Если так, проверьте, что база данных отвечает своевременно.
/proc/loadavg
– Josh
9 December 2009 в 18:49
Это определенно похоже на slowloris DoS-атаку против одного из сайтов, которые Вы размещаете.
Найдите больше деталей, а также Debian и решений Redhat здесь
Один из других признаков того типа нападения будет появлением десятков/сотен из 400 ошибок в Ваших журналах Apache (если/после того, как нападение закончится - читает больше по ha.ckers.org/slowloris/),
David покрывает большинство основ в своем ответе.
Кроме того, подобный проблеме блокировки DB, мог быть запрос к бэкенду к внешнему ресурсу, это не отвечает или отвечает медленно. Например, если бы у Вас был CGI, который сделал LWP на example.net, то Apache ожидал бы до тайм-аута или ответа. Это может вызвать исчерпание ресурса также.
Как часто делают Вас ssh в поле? У меня была проблема, столь странная, как это звучит, что ssh на самом деле уничтожил бы апачский сервис. Я был бы ssh в, и все просто запрется. У меня нет vpn'ed в поле в течение многих месяцев и не было никакой проблемы вообще. Этого не произошло каждый раз. Но я знаю, что была корреляция.
При контакте с любой проблемой производительности необходимо знать вход. Настройте свой переключатель для зеркального отражения порта веб-сервера к серверу сниффера, где Вы записываете весь Трафик HTTP. Попытайтесь коррелировать трафик с проблемой и попытаться воспроизвести проблему на тестовой машине.
Следующий шаг должен видеть то, что происходит с теми процессами. Использовать strace
и посмотрите, в котором системном вызове они ожидают. Использовать lsof
узнать дескрипторы файлов, вовлеченные в strace. ls -l /proc/<PID>/fd
полезно также.
Как chronos сказал, это могло быть нападение slowloris.