Date: Wed, 5 Feb 2014 17:13:56 GMT From: "W.Scholten" <w-info2@xs4all.nl> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/186488: junkbuster listen queue increase to stop sonewconn filling the message log Message-ID: <201402051713.s15HDuKI048858@oldred.freebsd.org> Resent-Message-ID: <201402051720.s15HK0aX050522@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 186488 >Category: ports >Synopsis: junkbuster listen queue increase to stop sonewconn filling the message log >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Feb 05 17:20:00 UTC 2014 >Closed-Date: >Last-Modified: >Originator: W.Scholten >Release: 10.0 RC2 >Organization: >Environment: FreeBSD localhost 10.0-RC2 FreeBSD 10.0-RC2 #0 r259404: Sun Dec 15 08:18:20 UTC 2013 root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 >Description: junkbuster listen queue increase to remove lots of messages by sonewconn that the queue is full: 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? Some people have recommended just to stop using certain programs but that doesn't seem a solution. listen(2) doesn't give a real clue. It mentions changes to the queue in 4.5, so very long ago. Haven't read commit logs to see if there are hints there :) >How-To-Repeat: Run junkbuster as a proxy for firefox for example. >Fix: See above, change the listen queue depth to 20 instead of 5. Not sure if there are negative consequences to doing this, doesn't look so from reading the man page on listen but I'm no expert and I didn't see any response on hackers so far to my posting there... >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402051713.s15HDuKI048858>