Самый простой способ, это найти какой 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
Комментарии
разрешить доступ с домена и поддоменов сайта 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 добавить юзера
ExtendedStatus On
нужно писать после:
Include conf.d
Если вы включите 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