足りないと overflow
kernel: sonewconn: pcb 0xfffff801104b4620: Listen queue overflow: 193 already in queue awaiting acceptance
標準だと128 kern.ipc.soacceptqueue (default: 128)
# netstat -Lan Current listen queue sizes (qlen/incqlen/maxqlen) Proto Listen Local Address tcp4 0/0/128 *.80 tcp6 0/0/128 *.80
増やす
# sysctl kern.ipc.soacceptqueue=4096 # vi /etc/sysctl.conf ==== kern.ipc.soacceptqueue=4096 ====
# /usr/local/etc/rc.d/apache24 restart # netstat -Lan Current listen queue sizes (qlen/incqlen/maxqlen) Proto Listen Local Address tcp4 0/0/511 *.80 tcp6 0/0/511 *.80
Apacheの設定 ListenBackLog でも制限されている (default: 511)
増やす
# vi /www/conf/httpd.conf ==== ListenBackLog 1024 ====
# /usr/local/etc/rc.d/apache24 restart # netstat -Lan Current listen queue sizes (qlen/incqlen/maxqlen) Proto Listen Local Address tcp4 0/7/1024 *.80 tcp6 0/0/1024 *.80
kern.ipc.somaxconn -> kern.ipc.soacceptqueue
kern.ipc.somaxconn はFreeBSD 10.0から kern.ipc.soacceptqueue に名前が変わった。
Hide the unfortunate named sysctl kern.ipc.somaxconn from sysctl -a
output and replace it with a new visible sysctl kern.ipc.acceptqueue
of the same functionality. It specifies the maximum length of the
accept queue on a listen socket.
svn commit: r241781 - in head: lib/libc/sys sys/kern
During some research I found the following link that indicates a change for the kernel parameter kern.ipc.somaxconn from FreeBSD 10.0 onwards: https://www.freebsd.org/cgi/man.cgi?query=listen&sektion=2#end
参考
http://dokuosan.net/zousan/nikki170.html
Tuning FreeBSD for the highload
Searching through the kernel source, I eventually found my answer.
The message is reporting when QLEN > 3 * (QLIM / 2)http://lawrencechen.net/2014/sonewconn-pcb-0xfffffe006acd9310-listen-queue
kernel: sonewconn: pcb 0xfffff801104b4620: Listen queue overflow: 193 already in queue awaiting acceptance
193 > 3 * (128 / 2) = 192