Привет!Конфигурация сервера: i920 (8 cores), 8Gb ram, стал виснуть чуть ли не каждый день.
Симптомы:
Очень быстро растет load average (до страшных величин):
top - 15:54:09 up 19:26, 0 users, load average: 511.12, 256.54, 104.97
переполняется память и своп:
Mem: 8166732k total, 7574492k used, 592240k free, 4100k buffers
Swap: 4200888k total, 4166296k used, 34592k free, 41140k cached
После чего сервер разве что пингуется, но больше никак его растолкать не получается.Если поймать момент и выключить httpd в момент роста load average - все становится ОК, стало быть дело в httpd и смежных процессах.
Сделал скриптик, который раз в минуту пишет статистику
#!/bin/sh
NOW=$(date +%Y%m%d_%H_%M)
lynx -dump http://localhost/server-stz > /root/visla/s-stz_$NOW
lynx -dump http://localhost/stz > /root/visla/stz_$NOW
netstat -plan|grep :80|awk {'print $5'}|grep -v :80|cut -d: -f 1|sort|uniq -c|sort -nk 1 > /root/visla/netstat_$NOW
ps -ylC httpd --sort:rss > /root/visla/ps_$NOW
top -bcn1 > /root/visla/top_$NOWСейчас вот сервер опять словил висяк, но по крайней мере есть файлы со статистикой. Но вот понять, что так сильно отожрало CPU и память затруднительно....
По статусу апача в момент самого висяка:
Server Version: Apache/2.2.3 (CentOS)
Server Built: May 28 2009 12:49:04
_________________________________________________________________
Current Time: Wednesday, 07-Oct-2009 15:56:42 CEST
Restart Time: Wednesday, 07-Oct-2009 14:10:23 CEST
Parent Server Generation: 0
Server uptime: 1 hour 46 minutes 19 seconds
Total accesses: 540995 - Total Traffic: 4.2 GB
CPU Usage: u1227.23 s1179.73 cu0 cs0 - 37.7% CPU load
84.8 requests/sec - 0.7 MB/second - 8.1 kB/request
879 requests currently being processed, 56 idle workers
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW_WWWWWWWWWWWWWWWWWWWW.WWWW.WWWWWW
WWW_WWWWWWWWWWWW.W.WWWWWWWWWWWWWWWWWW_WWWWWWWWWWWWWWWWWWWWWWWW.W
WWWWWWWWWWCWWWW.WWWWWWWWWWWWWWWWWWWWWWWW.W_WWWW_WWWWWW.WWWWWWWWW
WWWWWWWWWWWW.WWWWWWWWWW.CW_WWCWWWWW_...WWWW_W_WWWWWWWWWWW.WWWWWW
WWWWWWWW.WWWWWWWWWWWWWWW._W._WWWWW..WWW_WWWWWWWWWWWWWWWWWWWWWWWW
WWWWW.WWWWWWWW_WWWWWWWWWWWWWWW_WWWWWWWWWWWWWW__WWWWWWWWWWWWWW_WW
WWWWWCWWWWWWWWWW_W_.WWWWWWWWW_CWWWWC_W.WWWW_.WWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWW.W.WWWWWWWWWWWWWWWWWWWW.WWWWWWWW.WWWWWWWWWWWWW
WWWWWWWWWW..WWWWW_WWWWWW.WWWW.WWWWWWWW_W._WWWWWWW.WWWWW.WWWWWWWW
WWW.WWCWWW.WWWWWW_WWWWWWWWWWWW__.WW.W.WW_W_W.WWWWW.WW_WWW_WWW.WW
WW.WWW__W.WWWWWCWWWWWWW..WW.W_WWWW_WWW_WWW_W.WW_.W_WWWW.WWW.WWW.
WRWWW.WWW_WWWWWWWW.W_.WWWW_W_WWRWWWWWW_.WWWWWWWWWWWWWWWWWWWWWWWW
_WWWWWWWWWWW.WW.W_WWWWWWWWWW_WWWWWWWWW_WWWWW.WWW_WWWWWWWWWW_WWWW
.WWWW.WW_WWWWWC_WWWWW.WWWWWWWWWW.WWWWWWWCWWWWWWWWWWW.W.WWWWW.W.W
W.WWWWWW..WWWWWWWWWW.WWWWWWW_WW...WWWW.WWWWW..WWWWWW.WWWW.CWW.W.
WWW.WW.WWWWWWWWWWWWWW_WWWWWWWWWWWWW.WWW..W.WWW.WWWWW.WWWCW_WWWWR
вывод top:top - 15:54:09 up 19:26, 0 users, load average: 511.12, 256.54, 104.97
Tasks: 1141 total, 1 running, 1139 sleeping, 0 stopped, 1 zombie
Cpu(s): 14.2%us, 0.6%sy, 0.0%ni, 84.4%id, 0.4%wa, 0.1%hi, 0.4%si, 0.0%st
Mem: 8166732k total, 7574492k used, 592240k free, 4100k buffers
Swap: 4200888k total, 4166296k used, 34592k free, 41140k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3187 mysql 15 0 408m 19m 3404 S 16.6 0.2 29:35.22 /usr/libexec/mysqld
23513 apache 15 0 356m 11m 4680 S 11.1 0.1 0:00.22 /usr/sbin/httpd
25844 root 15 0 13548 1796 704 R 5.5 0.0 0:00.06 top -bcn1
21312 apache 16 0 357m 15m 6380 D 3.7 0.2 0:02.96 /usr/sbin/httpd
23751 apache 16 0 358m 14m 6328 D 3.7 0.2 0:01.05 /usr/sbin/httpd
24504 apache 15 0 356m 13m 5660 D 3.7 0.2 0:00.34 /usr/sbin/httpd
25621 apache 15 0 354m 10m 4208 D 3.7 0.1 0:00.04 /usr/sbin/httpd
20386 apache 16 0 358m 14m 6424 D 1.8 0.2 0:01.67 /usr/sbin/httpd
25611 apache 15 0 355m 12m 5224 S 1.8 0.2 0:00.72 /usr/sbin/httpd
...
и очень много процессов типа
25617 apache 18 0 351m 9100 2708 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25618 apache 15 0 354m 12m 4244 D 0.0 0.2 0:00.10 /usr/sbin/httpd
25622 apache 15 0 355m 11m 4704 D 0.0 0.1 0:01.39 /usr/sbin/httpd
25623 apache 15 0 358m 15m 5320 S 0.0 0.2 0:00.12 /usr/sbin/httpd
25624 apache 15 0 356m 12m 4696 D 0.0 0.2 0:00.07 /usr/sbin/httpd
25625 apache 15 0 353m 11m 3824 S 0.0 0.2 0:00.06 /usr/sbin/httpd
25626 apache 18 0 353m 11m 3916 D 0.0 0.2 0:09.31 /usr/sbin/httpd
25627 apache 15 0 350m 6904 1540 S 0.0 0.1 0:01.05 /usr/sbin/httpd
25628 apache 15 0 351m 9204 3412 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25629 apache 16 0 351m 9140 2712 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25630 apache 17 0 351m 8880 2476 D 0.0 0.1 0:00.11 /usr/sbin/httpd
25631 apache 15 0 354m 10m 4056 S 0.0 0.1 0:00.07 /usr/sbin/httpd
25633 apache 18 0 351m 8796 2412 D 0.0 0.1 0:00.07 /usr/sbin/httpd
25636 apache 18 0 351m 8808 2408 D 0.0 0.1 0:00.18 /usr/sbin/httpd
25637 apache 15 0 355m 11m 4904 S 0.0 0.2 0:00.08 /usr/sbin/httpd
25638 apache 18 0 351m 8812 2408 D 0.0 0.1 0:00.45 /usr/sbin/httpd
25642 apache 18 0 351m 8768 2380 D 0.0 0.1 0:00.41 /usr/sbin/httpd
25643 apache 16 0 351m 9700 3280 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25644 apache 18 0 351m 8796 2408 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25645 apache 18 0 351m 9368 2980 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25646 apache 15 0 352m 10m 3392 D 0.0 0.1 0:00.11 /usr/sbin/httpd
25647 apache 16 0 351m 8804 2408 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25652 apache 16 0 351m 8804 2408 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25653 apache 17 0 351m 9012 2640 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25654 apache 18 0 351m 8804 2400 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25655 apache 15 0 352m 10m 3520 S 0.0 0.1 0:00.02 /usr/sbin/httpd
25656 apache 18 0 351m 9672 3280 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25658 apache 15 0 351m 9380 2980 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25659 apache 18 0 351m 9288 2968 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25660 apache 15 0 350m 8400 2872 S 0.0 0.1 0:00.00 /usr/sbin/httpd
25661 apache 15 0 350m 6208 1296 S 0.0 0.1 0:00.00 /usr/sbin/httpd
25662 apache 18 0 351m 9024 2664 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25705 apache 15 0 352m 10m 3524 S 0.0 0.1 0:00.02 /usr/sbin/httpd
25706 apache 18 0 351m 9028 2668 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25707 apache 18 0 351m 9596 3236 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25708 apache 18 0 351m 9316 3264 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25712 apache 18 0 351m 9024 2664 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25713 apache 18 0 351m 9104 2716 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25714 apache 18 0 351m 8756 2700 D 0.0 0.1 0:00.01 /usr/sbin/httpd
25715 apache 18 0 351m 9336 2952 D 0.0 0.1 0:00.01 /usr/sbin/httpdМожет быть, просто дело в тюнинге апача (уменьшить maxclients, еще что-то?), но как мне кажется, что так страшно он все-таки падать не должен.
Какие будут идеи? или как еще можно продиагностировать где дрянь прячется?
Конфиг апача:
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 1024
MaxClients 1024
MaxRequestsPerChild 1024
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads25
MaxSpareThreads75
ThreadsPerChild25
MaxRequestsPerChild 1024
</IfModule>Спасибо!
>[оверквотинг удален]
>Swap: 4200888k total, 4166296k used, 34592k free,
> 41140k cached
>
> PID USER PR NI
> VIRT RES SHR S %CPU %MEM
> TIME+ COMMAND
> 3187 mysql 15 0
>408m 19m 3404 S 16.6 0.2 29:35.22 /usr/libexec/mysqld
>
> много-много httpdМне кажется, что в какой-то момент mysql не справляется с потоком запросов и новые http-запросы растут быстрее обработки. Короче, узкое место - mysql. Может иметь смысл написать скрипт, обрубающий все долго висящие соединения с mysql.
нужно выяснить почему столько процессов со статусом sending reply, включите ExtendedStatus в server-status, может выкачивают какой проект, или флудят, тем самым парализуют работу.>[оверквотинг удален]
><IfModule worker.c>
>StartServers 2
>MaxClients 150
>MinSpareThreads25
>MaxSpareThreads75
>ThreadsPerChild25
>MaxRequestsPerChild 1024
></IfModule>
>
>Спасибо!
Что меня вот еще смутило:top:
15532 apache 16 0 4168m 2.2g 6596 D 0.0 28.7 0:25.27 /usr/sbin/httpdps:
D 48 15532 24752 3 76 0 2345616 1067170 - ? 00:00:25 httpdМожет из-за этого процесса бардак пошел?
Попробуй gstat в момент нагрузки =)
Была похожая такая проблема, оказалось что не хватает ИО веника, разнесли мускул и хомяки юзеров на разные винты - как рукой сняло.
>Попробуй gstat в момент нагрузки =)
>Была похожая такая проблема, оказалось что не хватает ИО веника, разнесли мускул
>и хомяки юзеров на разные винты - как рукой сняло.gstat это фря. В Linux это, например, iostat. В той же фре top с сортировкой по дерганию диска гораздо удобнее
2 топикстартер:
Cpu(s): 14.2%us, 0.6%sy, 0.0%ni, 84.4%id, 0.4%wa, 0.1%hi, 0.4%si, 0.0%st
Вообще-то у Вас все колом в D стоит. Скорее всего, да, диск. А вот первопричину нужно найти, и найти средствами того же Апача.
Для начала, что бы понять, как вообще ищутся лоэды, хватит этой доки:
http://rhd.ru/docs/manuals/enterprise/RHEL-4-Manual/admin-gu...
А дальше, как уже подсказали, server-status - лучшее из открытых решений.