Apache “забит” с определенными запросами

Inotify должен быть Вашим другом для этого.... Также, кажется, существует привязка жемчуга. Ваше ядро должно поддерживать это хотя....

5
задан 25 March 2011 в 01:05
8 ответов

После Вас говорящий, какие модули Вы имели, я заметил, что Вы сказали, что EAccelerator, который имеет ошибку (Ссылка средства отслеживания ошибки здесь), который вызывает Apache к тупику в никогда конечном цикле, и приносят сервер к близкому бездействию, попытайтесь отключить это и посмотрите то, что происходит.

6
ответ дан 3 December 2019 в 01:03

Вы видите много запросов на POST /wordpress/wp-admin/admin-ajax.php в проблемные времена? Раз так затем это могло быть вызвано или передающим спаммером, пробующим к грубой силе что-то преднамеренной попыткой DoS, или просто потому что сайт становится отправленным где-нибудь занятый время от времени (Ваши журналы показывают много запросов, прибывающих из того же удаленного ссылающегося домена?).

Это могла также быть проблема блокировки базы данных, т.е. один запрос попросил, чтобы долгая операция, которая будет выполнена с полным deny-read-until-done, соединила таблицу, к которой часто получают доступ, и другие запросы просто застревают, ожидая блокировки, которая будет выпущена (который может произойти естественно, или в результате Вас уничтожающий Apache и поэтому соединение, которое содержит блокировку (блокировки). Если сайт является достаточно оживленным затем, это может создать значительную загрузку, как много процессов Apache создается, которые затем находятся, используя память, пока они не могут продолжить мимо блокировки - если Ваша конфигурация Apache такова, что относительно неограниченное количество дочерних процессов может быть создано затем, система могла легко начать перегружать подкачку в этой точке.

Чтобы видеть, вызывается ли загрузка использованием ЦП, IO из-за доступа DB и такого, или IO должный подкачать перегрузку, необходимо будет исследовать вывод htop (или просто вершина), свободный, и другая обычная системная нагрузка, контролирующая utils. Это может дать больше ключа к разгадке как, туда, где корень проблемы мог бы быть найден.

5
ответ дан 3 December 2019 в 01:03
  • 1
    David, спасибо за Ваши ответы. Я обычно только вижу один или два запроса на администраторский-ajax.php сценарий. Но это иногда происходит по запросам, которые не имеют никакого доступа к базе данных вообще... так it' s не характерный для Wordpress и не связанный с базой данных. Загрузка ЦП isn' t относительно высоко, it' s точно так же, как Apache заводит в тупик и начинает не служить запросам, в конечном счете достигая MaxChildren и останавливаясь полностью. –  Josh 30 July 2009 в 22:10

Вы могли попытаться установить значение TimeOut в апаче к чему-то довольно драконовскому как 20 секунд. Это должно закончить соединение, если определенные действия занимают больше времени для завершения. Это - вид сглаживания проблемы, вместо того, чтобы решить его. Это должно, вероятно, использоваться, чтобы отладить, если проблема происходит из-за чего-то занимание слишком много времени, а не как конечное решение.

0
ответ дан 3 December 2019 в 01:03
  • 1
    Спасибо за предложение... У меня был сервер, который капризничал вчера, и я попробовал это, и в течение приблизительно 10 минут я думал, что он работал, но затем это произошло снова. –  Josh 9 December 2009 в 18:48

Ваши Сценарии PHP делают какие-либо запросы к базе данных? Если так, проверьте, что база данных отвечает своевременно.

0
ответ дан 3 December 2019 в 01:03
  • 1
    Этот конкретный сценарий делает. Но сервер стал одержимым сценариями это don' t доступ любые базы данных. –  Josh 22 July 2009 в 01:29
  • 2
    На самом деле я могу проверить, что это произошло на Сценариях PHP, которые просто читают от /proc/loadavg –  Josh 9 December 2009 в 18:49

Это определенно похоже на slowloris DoS-атаку против одного из сайтов, которые Вы размещаете.

Найдите больше деталей, а также Debian и решений Redhat здесь

Один из других признаков того типа нападения будет появлением десятков/сотен из 400 ошибок в Ваших журналах Apache (если/после того, как нападение закончится - читает больше по ha.ckers.org/slowloris/),

2
ответ дан 3 December 2019 в 01:03

David покрывает большинство основ в своем ответе.

Кроме того, подобный проблеме блокировки DB, мог быть запрос к бэкенду к внешнему ресурсу, это не отвечает или отвечает медленно. Например, если бы у Вас был CGI, который сделал LWP на example.net, то Apache ожидал бы до тайм-аута или ответа. Это может вызвать исчерпание ресурса также.

0
ответ дан 3 December 2019 в 01:03

Как часто делают Вас ssh в поле? У меня была проблема, столь странная, как это звучит, что ssh на самом деле уничтожил бы апачский сервис. Я был бы ssh в, и все просто запрется. У меня нет vpn'ed в поле в течение многих месяцев и не было никакой проблемы вообще. Этого не произошло каждый раз. Но я знаю, что была корреляция.

0
ответ дан 3 December 2019 в 01:03

При контакте с любой проблемой производительности необходимо знать вход. Настройте свой переключатель для зеркального отражения порта веб-сервера к серверу сниффера, где Вы записываете весь Трафик HTTP. Попытайтесь коррелировать трафик с проблемой и попытаться воспроизвести проблему на тестовой машине.

Следующий шаг должен видеть то, что происходит с теми процессами. Использовать strace и посмотрите, в котором системном вызове они ожидают. Использовать lsof узнать дескрипторы файлов, вовлеченные в strace. ls -l /proc/<PID>/fd полезно также.

Как chronos сказал, это могло быть нападение slowloris.

0
ответ дан 3 December 2019 в 01:03

Теги

Похожие вопросы