Столкнулся с проблемой, не могу понять куда копать дальше. Прошу поделиться опытом.
Есть выделенный сервер под 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.
На этом мои скудные админские познания заканчиваются. Посоветуйте, пожалуйста, куда копать дальше? Спасибо