The sonewconn listen queue overflow issue

John Baldwin jhb at freebsd.org
Tue Feb 11 19:49:48 UTC 2014


On Monday, February 03, 2014 2:33:11 pm Photo stuff wrote:
> L.S.
> 
> I came across a lot of messages in the log since, I think, about 9.1,
> that sometimes fill it up so much that all else is made invisible, of
> the type:
> 
>   sonewconn: pcb 0xyyyyyyyyyyyyyyyy: Listen queue overflow: 8 already in
> queue awaiting acceptance
> 
> I searched a bit on the web and came across recommendations to try
> netstat -nAa to find out which program this came from.
> 
> Well, running netstat -nAa |grep pcb 0xyyyyyyyyyyyyyyyy in a loop didn't
> work, it didn't give any output even though the messages kept coming in
> the log during that time.
> 
> I forgot about it then recently searched a bit more, and I found this page:
> 
>   http://lawrencechen.net/2014/sonewconn-pcb-0xfffffe006acd9310-listen-queue
> 
> So a listen queue overflow of 8 is caused by a listen value of 5 (QLEN >
> 3 * (QLIM / 2))
> 
> Doing:
>  netstat -LaAn | grep '/5 '
> 
> resulted in
> ffffzzzzzzzzzzzz tcp4  0/0/5  127.0.0.1:8000
> 
> The ffffzzz value was not the value in the message log,
> but the connection means in my case it had to be the junkbuster proxy
> (which I still use, still works well :) ), as I didn't run anything else
> locally.
> 
> So I looked into junkbuster's cource and in bind.c I changed 2 instances of:
> 
> 	while (listen(fd, 5) == -1) {
> 
> to
> 
> 	while (listen(fd, 10) == -1) { /* 10 instead of 5, this fixes dmesg
> spamming of the type 'sonewconn: pcb 0xyyyyyyyyyyyyyyyy: Listen queue
> overflow: 8 already in queue awaiting acceptance'? */
> 
> This improved the situation, but still gave the issue of the log filling
> up too much. So then I changed it to 20, which gave me silence :)
> 
> Checking the latest log I couldn't find anything in the last 10 days.
> 
> So for people who have this issue I recommend calculating which value
> the listen-value that the overflow-value corresponds to, then checking
> as above and then it should be possible to find the daemon causing the
> issue. And modify that program...
> 
> But while this removes the errors, what do these messages really
> signify? I mean which didn't this happen before in earlier versions of
> FreeBSD?

Maybe earlier versions just dropped the connections without logging a message?  
The message means that connections are arriving faster than the userland
program can accept them.  There is a stat for that in 'netstat -s -p tcp' and 
you can see if it was increasing on older versions of FreeBSD (if you still 
have a machine with that around) to make sure the only change is the 
additional log message.

> Btw., at the moment (running 10.0 RC2) my message log now gets filled up
> with something else :)
> 
>   hwpstate0: set freq failed, err 6
> 
> This happened long ago already in 9.1 with my AMD3500+ and still now on
> my AMD FX6100...

I am not familiar with how hwpstate works, sorry.

-- 
John Baldwin


More information about the freebsd-hackers mailing list