Находим скрипт который грузит систему через httpd процесс и server-status

Самый простой способ, это найти какой URL загружает процессор, уничтожить PID и исправить скрипт с ошибкой.

Сделать это можно, сконфигруриров файл httpd.conf

У некоторых он расположен по адресу /etc/httpd/conf/httpd.conf, у меня - /usr/local/etc/apache22/httpd.conf

Для этого впишем в него, после строки DocumentRoot следующую информацию:

# Включаем подробную информацию
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
# если на сервере используется 1 IP-адрес, то можно дать доступ скриптам на адрес 127.0.0.1
Allow from 127.0.0.1
# если на сервере используется несколько IP-адресов, то для скриптов нужно дать доступ на каждый или на нужные, например:
# доступ для скриптов системы которые будут работать от IP адреса 78.145.57.89

Allow from 78.145.57.89
# доступ для скриптов системы которые будут работать от IP адреса 98.57.194.95
Allow from 98.57.194.95
# так же можно написать свой интернет IP-адрес, к примеру он у Вас 95.79.92.14
Allow from 95.79.92.14
</Location>

Примечание: почитайте комментарии выделенные серым цветом, думаю они могут Вам пригодится

Обратите внимание, модули status_module и info_module должны быть раскомментированы, они в Вашем конфиге выглядят приблизительно так:

LoadModule status_module libexec/apache2/mod_status.so
LoadModule info_module libexec/apache2/mod_info.so

Перезапустите Apache.

Теперь, можно обратиться к своему сайту по URL http://site.ru/server-status и посмотреть текущую статистику доступа к страницам сайтов.

Если на Вашем сайте в файле .htaccess не указаны какие-то настройки, перекрывающие доступ к /server-status, то перед Вами появится информация о текущих запросах к сайтам и их URL.

Вам нужно посмотреть на столбец CPU, это и есть загрузка процессора. В найденной строке, справа будет URL страницы, а слева будет отображаться PID - идентификатор процесса.

К примеру, мы нашли самый загружаемый процесс PID и его номер 56789. Теперь, чтобы избавиться от этого процесса выполним команду:

kill -s 9 56789

Дальше, Вам нужо будет понять, какой скрипт работает с страницей URL, которая загрузила Ваш сервер, и конечно устранить ошибки в найденном скрипте.

Неплохое, более подробное описание можно почитать на сайте lissyara.su


12.01.2010 11:17

Комментарии

Спасибо)
Дмитрий | 31.10.2010 15:16
в тему, несколько примеров

разрешить доступ с домена и поддоменов сайта foo.com

<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from .foo.com
</Location>

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

<Location /server-status-my-secret-address>
   SetHandler server-status
</Location>

или закрывайте доступ на http basic auth

<Location /server-status>
SetHandler server-status
AuthName "Apache status"
AuthType Basic
AuthUserFile /etc/server-status.passwd
require valid-user
</Location>

в /etc/server-status.passwd добавить юзера
Luna2 | 01.07.2011 10:25
заметка:
ExtendedStatus On
нужно писать после:
Include conf.d
Заметка | 30.01.2013 14:32
заметка:
  Если вы включите mod_status и также установите ExtendedStatus On,
  тогда на каждый запрос Apache будет выполнять два вызова
  gettimeofday(2) (или times(2), в зависимости от вашей ОС), и (pre-1.3)
  несколько дополнительных вызовов time(2). Когда это все выполнено,
  отчет по статусу содержит временные метки. Для наилучшего
  быстродействия установите ExtendedStatus off (это сделано по
  умолчанию).

  mod_status возможно нужно сконфигурировать так, чтобы только несколько
  пользователей имели к нему доступ, вместо открытия его для всех, но
  это имеет очень малое значение на общую производительность.
Хорошая статья на эту тему http://www.opennet.ru/base/dev/perf_tuning.txt.html
Заметка | 31.01.2013 06:56