Подробная статистика нагрузки веб-сервера Apache
25 Oct 2014 | Автор: dd |Начала у меня тут тормозить одна VPSка – при ближайшем рассмотрении оказалось, что открыто под сотню одновременных процессов httpd. Учитывая, что на серваке живут в основном саты и два сайта разных сервисов, возник вопрос- толи долбятся к сервисам, толи кто то нюкает сателлиты, т.ч возникла необходимость оттрейсить это дело, т.к всем известный ps давал только нехорошую картину, что процессов очень много.
У веб-сервера Apache этим занимается специальный апачевский модуль status_module . Также имеется info_module который возвращает конфигурацию Apache, но в данном случае он мне мало интересен. Да и к тому же, как оказалось, у меня почему то по дефолту стоял только status_module, а дополнительно поставить info_module не представлялось возможным, т.к убив какое то время на поиски, смог найти только исходник для мандривы, который почему то не захотел дружить с моим веб-сервером, т.ч пришлось на это дело забить. Хотя утром, на свежую голову, подрубил мод info_module через утилиту apxs ***.
Проверить наличие модов, можно следующей командой:
# apachectl -M | egrep -i “status|info”
status_module (static)
Syntax OK
Можно также просмотреть все скомпилированные модули:
# httpd -l
Убедившись в наличии подключенного модуля, идем в файл /etc/httpd/conf/extra/httpd-info.conf и приводим его к следующему виду:
###### /etc/httpd/conf/extra/httpd-info.conf
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 1.2.3.4
</Location>
ExtendedStatus On
###################
где 1.2.3.4 – IP адрес с которого будет разрешен просмотр статистики через браузер и доступный по адресу:
http://server-IP/server-status
в директиве можно поменять название урла на какое нить сложное, чтобы никто не догадался, а также прикрутить например авторизацию.
Рестартим апач
# service httpd restart
и любуемся имеющейся статистикой по указанному адресу, где нам подробно расписывается IP клиента, к какому сайту и документу обращаются, сколько ресурсов кушают. И сразу становится понятно, к каким сайтам обращается демон httpd и кто ответственный за чрезмерную нагрузку веб-сервера.
Теоретически, можно загнаться дальше и поставить текстовый браузер lynx на сервер:
# yum install lynx
и разрешив в файле httpd-info.conf просмотр с localhost смотреть подробную статистику использования ресурсов веб-сервером, через командную строку сервера:
# lynx http://localhost/server-status
*** для корректного вывода информации info_module в файле httpd-info.conf должны наличествовать строки:
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 1.2.3.4
</Location>