У меня есть сервер Linux SLES 10, и иногда он доводит Apache до 100% CPU.
С участием ps ax
Могу ли я увидеть, что Apache породил ~ 50 процессов Apache.
Может, например, в ps
скажите мне, что делает каждый из этих процессов Apache?
Или, возможно, какой-то другой метод, чтобы я мог видеть, какие веб-страницы вызывают проблему?
В моем файле /etc/httpd/conf/httpd.conf есть этот раздел:
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .example.com
Allow from 127. 192.168.1.
</Location>
Таким образом, если я пойду в http://192.168.1.1/server-status, Я получаю страницу, которая говорит мне:
последние запросы
Статус сервера Apache для 192.168.3.1
Версия сервера: Apache / 2.2.3 (Red Hat)
Сервер построен: 14 июля 2009 г., 06:04:04
Текущее время: суббота, 17-июл-2010 10:20:31 CDT
Время перезапуска: суббота, 17 июля 2010 г., 10:13:12 CDT
Генерация родительского сервера: 0
Время работы сервера: 7 минут 19 секунд
Всего обращений: 51 - Общий трафик: 156 КБ
Использование ЦП: u0 s0 cu0 cs0
0,116 запросов / сек - 363 Б / сек - 3132 Б / запрос
1 запрос в настоящее время обрабатывается, 7 неработающих рабочих
__W _____................................................. .......
.................................................. ..............
.................................................. ..............
.................................................. ..............
Клавиша табло:
"_" Ожидание соединения, "S" Запуск, "R" Запрос на чтение,
"W" Отправка ответа, "K" Keepalive (чтение), "D" DNS-поиск,
"C" Закрытие соединения, "L" Регистрация, "G" Изящное завершение,
"I" Холостая уборка рабочего, ". Открытый слот без текущего процесса
Srv PID Acc M CPU SS Req Conn Child Slot Client Запрос VHost
0-0 20715 0/2/2 _ 0,00 418 0 0,0 0,01 0,01 192.168.3.97 dit GET / состояние сервера HTTP / 1.1
1-0 20716 0/49/49 _ 0,00 128 0 0,0 0,15 0,15 192.168.3.97 dit GET / статус сервера HTTP / 1.1
2-0 20717 0/0/0 W 0,00 0 520222374 0,0 0,00 0,00 192.168.3.97 dit GET / состояние сервера HTTP / 1.1
strace
может сказать вам, что делает конкретный процесс на уровне системных вызовов, но не даст вам «50-футового обзора» того, что происходит. Вам нужно будет собрать воедино системные вызовы, которые он использует, чтобы понять это.
Если у вас есть веб-сайт с серверной частью базы данных, вы можете посмотреть в СУБД, какие команды сейчас выполняются. Возможно, это поможет вам сузить круг вопросов, где в вашем коде веб-сайта создается нагрузка.
В противном случае вы могли бы увеличить уровень журнала демона httpd. Тогда у вас будет больше информации в журналах.
Также существует ltrace, который работает как strace, но с вызовами библиотеки.
Вы можете найти top более информативным, чем ps.