Назад | Перейти на главную страницу

Как узнать, что заставляет Apache / httpd работать при таком высоком использовании памяти

У меня есть один сайт, который при попадании паука просто срывается с ручками. Обычно вроде все нормально. У нас есть nagios montior, который сообщает, когда загрузка ЦП превышает 80%.

Когда мы получаем предупреждения, я начинаю просматривать логи через sudo tail -f access_log. Чаще всего это паук.

Кажется, что он попался в один URL-адрес, который паук упаковал бесконечным количеством значений строки запроса.

Что я пробовал:

С тех пор я положил Disallow: *?* в robots.txt.

Текущий top читает:

Вопрос:

Есть ли другие методы, которые я мог бы использовать, чтобы сказать паукам, чтобы они успокоились на нашем сайте? При использовании процессов httpd в верхней памяти, могу ли я определить, какие страницы они вызывают, чтобы изолировать проблемные места на этом сайте?

То есть как мне найти и изолировать виновника?

Опечатки: Мы запускаем Apache 2.2.15 на RHEL 6.8 с memcache.

# apachectl -V
Server version: Apache/2.2.15 (Unix)
Server built:   Feb  4 2016 02:44:09
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)

Вы можете попробовать использовать lsof для чтения файлов, открытых процессом apache:

lsof -p PID

Также хорошей идеей является проверка журналов apache на наличие ошибок, соответствующих отметкам времени сканирования пауком в ваших журналах доступа.

Мне также нравится использовать goaccess, чтобы помочь проанализировать данные журнала и экстраполировать полезную информацию:

http://www.hackersgarage.com/goaccess-on-rhelcentos-6-linux-real-time-apache-log-analyzer.html

strace и ltrace также являются отличными утилитами, которые вы, возможно, захотите использовать для устранения неполадок.