О web-разработке
и даже немного больше...

httpd грузит процессор, что делать?

Найти проблемное место на сайте, которое побуждает грузить всю систему довольно непросто. Однако это не говорит о том, что это не возможно, вполне возможно, и мы в данном посту как раз рассмотрим одну из подобных ситуаций.
Итак, мы знаем, что система висит, и грузит её процесс httpd. Этот процесс порождают скрипты, вызываемые на сайте. Наша задача определить узкое место на сайте, то, что грузит сервер, и устранить его соответственно.
В Apache есть специальные модули, которые помогут нам в этом деле, именуются они как status_module и info_module. Для их использования нужно убедиться, что они включены в конфигурацию сервера Apache. По умолчанию они включены, так что, скорее всего вам не придется заниматься их установкой.

Открываем файл конфигурации веб-сервера, у меня система CentOS Linux, и файл конфигурации расположен тут:

/etc/httpd/conf/httpd.conf

Убеждаемся, что модули подключены, находим подобные строки:

LoadModule status_module modules/mod_status.so
LoadModule info_module modules/mod_info.so

После этого, после строки DocumentRoot, вписываем настройки, чтобы появилась возможность мониторинга нагрузки через браузер.

ExtendedStatus On
<Location /server-status>
	SetHandler server-status
	Order Deny,Allow
	Deny from all
	# IP адреса, которые могут просматривать данные
	Allow from 127.0.0.1
	Allow from 192.168.0.189
</Location>

Строка Location /server-status указывает путь, по которому будет доступна статистика, здесь стоит указать свой путь, из соображений безопасности. Так же важный момент это IP адреса, для которых будет доступна статистика. К этим параметрам тоже следует отнестись с вниманием, чтобы статистика не оказалась в открытом доступе.

После внесения изменений в файле конфигурации, нужно перезапустить сам сервера httpd. После этого можно попробовать открыть страницу со статистикой, она будет доступна по адресу:

http://ваш_сайт/sever-status/

Стоит обратить внимание на то, что если у вас имеется файл .htaccess в котором прописаны правила перенаправления, то он может перекрывать доступ к /server-status. Для этого вам так же будет необходимо исключить путь к статистике.

После открытия статистики видим страницу, которая начинается со строк «Apache Server Status for». Ниже будет таблица, в которой нас будут интересовать процессы грузящие систему. По колонке CPU можно определить проблемные процессы. Убираются проблемные процессы по PID (ID процесса), в таблице так же отмечена эта колонка.

Убираем проблемный процесс, посредством консоли:

# kill -s 1911

apache-server-status

После того как вы определили URL который грузит сервер, далее вам предстоит самостоятельно выяснить и устранить причины излишней нагрузки на процессор уже в коде вашего сайта. Вы можете так же воспользоваться другими хорошими инструментами, такими как Munin, довольно хорошая вещь для мониторинга сервера. Бывает и довольно часто подвисшие процессы в MySQL, что тоже не очень сказывается на работе сайта, для этих целей вы можете воспользоваться утилитой Mytop.

Опубликован: 25.09.2016 г.

См. также:

Преимущества и недостатки веб-серверов Nginx и Apache
Как включить сжатие GZip в Nginx?
Подробнее о логах в Apache
Ротация логов в Linux
Denwer в локальной сети
HTTP авторизация
Просмотр списка загруженных модулей Apache
Тестирование сайта под нагрузкой

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта