Добрый день!
Прошу помочь с решением проблемы :(
Есть удаленный сервер FreeBSD 5.3
На нем прилично нагруженый апач, собран с
#define HARD_SERVER_LIMIT 2048
Если в конфиге апача стоит
MaxClients 768
все работает как часики.
Если ставлю MaxClients в бОльшее число, например 1024, то при большом наплыве посетителей сервер затыкается. То есть перестает отвечать вообще на любые запросы, включая ssh и т.п. Через некоторое время он очухивается и начинает отвечать, но весьма нестабильно - то есть отклик, то снова затык...
Вот прицесс затыка гляди из vmstat 5:
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr ad0 ad2 in sy cs us sy id
0 0 0 1402400 131740 657 8 2 0 416 0 8 0 2157 7967 3572 10 6 84
1 1 0 1399868 129416 457 5 1 0 686 0 5 0 1184 6380 1832 7 3 90
0 7 0 1396364 130048 152 0 0 0 199 0 25 0 586 2347 795 2 2 97
0 27 0 1398664 127904 230 2 1 0 106 0 5 0 698 1191 796 3 1 96
0 39 0 1399912 130864 137 0 1 0 319 0 0 0 543 508 627 0 1 99
0 27 0 1399060 129652 329 2 0 0 268 0 2 0 658 1451 728 3 2 95
0 17 0 1405192 125128 278 0 1 0 218 0 2 0 611 2392 745 2 2 96
0 11 0 1412048 122036 291 1 1 0 282 0 4 0 864 1691 991 11 3 86
3 14 0 1415164 120224 315 0 1 0 309 0 1 0 633 2104 696 4 2 94
0 27 0 1417168 118596 404 0 1 0 409 0 21 0 590 2707 751 4 2 94
(тут он заткнулся окончательно...)
Я вижу, что при затыке появляется некоторое количество процессов в состоянии b:
b blocked for resources (i/o, paging, etc.)
Но выяснить, каких именно ресурсов ожидают процессы у меня не выходит :(
В системе 3 ГБ памяти,
kern.maxfiles: 12328
kern.openfiles: 1982 (обычно не больше 2000)
kern.maxproc: 6164 (затыки начинаются при количестве процессов >1000)
kern.maxfilesperproc: 11095
kern.maxprocperuid: 5547
Параметр load average во время затыка падает до значения близкого к 0.
Во время затыка удалось сделать ps awlx, процессы апача выглядят приблизительно так:
UID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND
80 27050 7029 0 4 0 3012 2424 accept S ?? 0:01.98 /usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd-ligh
80 27053 7029 0 4 0 2952 2372 sbwait S ?? 0:01.35 /usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd-ligh
80 27208 7029 0 4 0 2952 2368 sbwait S ?? 0:00.75 /usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd-ligh
80 27259 7029 0 -16 0 3012 2428 zoneli D ?? 0:01.44 /usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd-ligh
Может кто-нибудь подскажет, куда именно нужно смотреть, чтобы понять в чем проблема?