IS> >практически тысячами за сутки лезут в error.log приведеные ниже
ошибки.
IS> >2005/11/21 09:54:19 [alert] 66483#0: *70837247 socket() failed (55:
No
IS> >buffer space available) while connecting to upstream ...
IS> Если OS - FreeBSD, то что показывает
IS> netstat -m
IS> и
IS> vmstat -z | egrep 'socket|tcpcb'
IS> ?
Да FreeBSD 6.0
[werewolf:~]# netstat -m
3178/1142/4320 mbufs in use (current/cache/total)
1727/807/2534/25600 mbuf clusters in use (current/cache/total/max)
306/459/6656 sfbufs in use (current/peak/max)
4248K/1899K/6148K bytes allocated to network (current/cache/total)
0 requests for sfbufs denied
0 requests for sfbufs delayed
13240 requests for I/O initiated by sendfile
3072 calls to protocol drain routines
[werewolf:~]# vmstat -z | egrep 'socket|tcpcb'
socket: 356, 12331, 9839, 556, 148352402
tcpcb: 460, 12328, 9577, 583, 118185270
В какую сторону копать?
Это странно. Сокетов вроде хватает: 9839+556 < 12331.
mbuf'ов тоже вроде хватает.
Такой вопрос мне уже где-то попадался не очень давно. Кажется в freebsddiary
(freebsd.rambler.ru/index_ukr.html - здесь архив). Но ответ не помню - был ли
он там вообще? Тоже freebsd, сильно нагруженная, тоже netstat -m никакого
криминала не показывал.
Если socket() возвращает "No buffer space available", то mbuf'ов, как
правило, хватает, а не хватает socket'ов или tcpcb. Увеличивается
в /boot/loader.conf примерно так:
kern.ipc.maxsockets="32768"
Но в данном случае KVA под socket/tcpcb хватает. Возможно, не хватает
физической памяти, но как это посмотреть, я не знаю.
Игорь Сысоев
http://sysoev.ru