summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authoremax <emax@FreeBSD.org>2013-10-31 20:33:21 +0000
committeremax <emax@FreeBSD.org>2013-10-31 20:33:21 +0000
commit6faa9004b4a01cb72187358810ec7882c9e47bb1 (patch)
treee12c2e367e30f1879a772c96b5ac4907f6257d2b /sys/kern
parentdf1721bf9948c71e2078c2ca63716962ac982f9f (diff)
downloadFreeBSD-src-6faa9004b4a01cb72187358810ec7882c9e47bb1.zip
FreeBSD-src-6faa9004b4a01cb72187358810ec7882c9e47bb1.tar.gz
Rate limit (to once per minute) "Listen queue overflow" message in
sonewconn(). Reviewed by: scottl, lstewart Obtained from: Netflix, Inc MFC after: 2 weeks
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/uipc_socket.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 66af181..9b5e342 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -486,6 +486,10 @@ SYSCTL_INT(_regression, OID_AUTO, sonewconn_earlytest, CTLFLAG_RW,
struct socket *
sonewconn(struct socket *head, int connstatus)
{
+ static struct timeval lastover;
+ static struct timeval overinterval = { 60, 0 };
+ static int overcount;
+
struct socket *so;
int over;
@@ -497,9 +501,17 @@ sonewconn(struct socket *head, int connstatus)
#else
if (over) {
#endif
- log(LOG_DEBUG, "%s: pcb %p: Listen queue overflow: "
- "%i already in queue awaiting acceptance\n",
- __func__, head->so_pcb, head->so_qlen);
+ overcount++;
+
+ if (ratecheck(&lastover, &overinterval)) {
+ log(LOG_DEBUG, "%s: pcb %p: Listen queue overflow: "
+ "%i already in queue awaiting acceptance "
+ "(%d occurrences)\n",
+ __func__, head->so_pcb, head->so_qlen, overcount);
+
+ overcount = 0;
+ }
+
return (NULL);
}
VNET_ASSERT(head->so_vnet != NULL, ("%s:%d so_vnet is NULL, head=%p",
OpenPOWER on IntegriCloud