Apache: посмотрите, какая страница/виртуальный хост убивает мой сервер

Apache: посмотрите, какая страница/виртуальный хост убивает мой сервер

Я не могу вернуть свой веб-сервер в онлайн. Сервер просто продолжает зависать, и мне приходится его перезагружать.

Я пользуюсь общим хостингом, поэтому найти виновника еще сложнее.

Как узнать, какая именно страница (или, по крайней мере, какой виртуальный хост) загружает процессор особенно сильно?

У меня CentOS с довольно стандартным набором Apache+MySQL+PHP.

Спасибо!

решение1

Вероятно, лучшей идеей будет установить apachetop.https://code.google.com/p/apachetop/, вы также можете использовать server-status Apache, но apachetop сделает его намного более читабельным.

решение2

Страница на самом деле не имеет никакого отношения к этой проблеме.

Следующая команда должна вывести список pid для httpd, отсортированный по проценту загрузки ЦП, с текущим рабочим каталогом, в котором находится httpd worker.

Конечно, это предполагает, что виновником является httpd.

IFS=" "; ps -A ho pcpu,comm,pid | grep httpd | sort -k1n \
while read pcpu comm pid; do \
    echo -n "${pcpu"}: "l pwdx "${pid}"; 
done

Я получаю вывод, похожий на:

0.0: 1850: /
0.0: 1852: /
0.0: 1854: /
0.0: 1853: /
0.0: 1855: /
0.0: 1856: /
0.0: 1857: /
0.0: 1858: /

Это работает, потому что apache изменит каталоги на корневой каталог документов виртуальных хостов перед выполнением любой работы внутри виртуального хоста. Так что любой виртуальный хост, у которого есть этот корневой каталог документов, является виновником.

Если у вас несколько виртуальных хостов, использующих один и тот же корневой каталог документов, вам придется исследовать оба виртуальных хоста, чтобы узнать, что они делают.

Поскольку у меня нет рабочих процессов Apache, потребляющих процессорное время, все они равны 0,0 и, следовательно, упорядочивание не выполняется.

Если проблема действительно в SQL-запросе, не ждите, что это что-то покажет.

Связанный контент