LINUX.ORG.RU
ФорумAdmin

Зависает сервер, высокий load average


0

0

Столкнулся с проблемой, не могу понять куда копать дальше. Прошу поделиться опытом.

Есть выделенный сервер под CentOS 5, на нём работает несколько средненагруженных сайтов. Ничего феноменального: php 5.2, mysql, firebird.

В последнее время сервер стал зависать. В такие периоды он не отвечает на установку TCP-соединения. В принципе время зависания немного соотносится с периодами пиковой нагрузки, но не всегда. Иногда «отвисает» сам через час-полтора, чаще всего нужно делать hard reset через панель хостера.

Сделал простой фокус. Настроил в кроне вывод в лог того, что пишет top, раз в 5 минут. Сегодня отловил момент зависания и удивился. Вот первые строки:

top - 21:48:37 up 1 day,  2:19,  0 users,  load average: 60.68, 56.13, 48.01
Tasks: 113 total,   1 running,  99 sleeping,   0 stopped,  13 zombie
Cpu(s): 22.1%us,  7.4%sy,  0.0%ni, 60.7%id,  9.4%wa,  0.2%hi,  0.2%si,  0.0%st
Mem:   1001640k total,   157868k used,   843772k free,     2012k buffers
Swap:  2024180k total,   241004k used,  1783176k free,    30388k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1881 mysql     15   0  238m  57m 3132 S  2.0  5.9 105:48.73 mysqld
    1 root      15   0  2064  524  496 S  0.0  0.1   0:00.50 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0

То есть высоченный load average (в нормальном полёте показывает около 1.5) при в общем-то незанятом процессоре и небольшом (насколько я понимаю) iowait.

Количество процессов в норме, обычно 100-150.

На этом мои скудные админские познания заканчиваются. Посоветуйте, пожалуйста, куда копать дальше? Спасибо

> 13 zombie

ЕМНИП, init присваивает себе все zombie процессы, по этому у него такое большое время выполнения.

AITap ★★★★★
()

а в логах по этому поводу ничего? в messages? в dmesg? в debug?

Komintern ★★★★★
()

У тебя там raid-5 на трех дисках и один диск отвалился
Угадал?

sdio ★★★★★
()

ну это в данный момент только один процесс в running.
попробуй top-пать хотябы раз в 10 секунд, причина будет видна.

chocholl ★★
()

Самый первый экран от top показывает загруку процессора средную за все время работы, так что то не показательно.

Поставь какой-нибудь простой мониторинг CPU чтобы постоянно собирал данные и рисовал графики как CPU так и LA, тогда станет понятно, либо CPU загружен полностью, или что-то постоянно порождает процессы из-за чего LA растет.

zhiltsov
()

Спасибо всем ответившим! У меня новая порция информации для размышления.

Удалось оказаться залогиненым в "момент зависания". Попробовал посмотреть на lsof в по совету уважаемого hizel. Оказалось, что в момент повышения нагрузки открыто около 25 тыс. файлов (при 6 тыс. в нормальном режиме), из которых 22 тыс. занято процессом httpd. Перезапуск апача тормоза снял и нагрузка (до поры, до времени, полагаю) вернулась к штатному уровню.

В dmesg ничего смертельного не увидел, впрочем, ничего понятного -- тоже :) Как посмотреть messages и debug, о которых говорит уважаемый Komintern, не знаю.

В access log ничего подозрительного вроде нет. В error_log есть куча сообщений типа таких:

[Tue Sep 01 19:50:36 2009] [error] child process 5868 still did not exit, sending a SIGKILL

и

[Tue Sep 01 19:50:37 2009] [error] could not make child process 5802 exit, attempting to continue anyway

Говорит ли это вам о чём-нибудь?

Ещё вопросов в догонку. Чем проще организовать постоянное слежение за CPU и LA как рекомендует уважаемый zhiltsov?

Кстати, на серваке стоит RAID0 (который страйп), так что при отмирании винта, насколько я понимаю, всё вообще должно сразу сломаться.

cryozot
() автор топика
Ответ на: комментарий от cryozot

>Чем проще организовать постоянное слежение за CPU и LA
http://www.cacti.net/ - красиво и с графиками

>Как посмотреть messages и debug
cat /var/log/messages
cat /var/log/debug

drull ★☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.