cvs commit: src/sys/netinet ip_icmp.c tcp.h tcp_input.c tcp_subr.ctcp_usrreq.c tcp_var.h

Andre Oppermann andre at freebsd.org
Fri Jan 9 06:33:55 PST 2004


silby at silby.com wrote:
> 
> > David Xu wrote:
> >>
> >> I got following messages when I am running mysql stress test suite,
> >> and the test can not be completed.
> >>
> >> "too many small tcp packets from 128.0.0.1:20672, av. 91byte/packet,
> >> dropping connection"
> >
> > You can set net.inet.tcp.minmssoverload to a higher value than the
> > default of 1,000.  I suggest trying with 2,000 as next step and see if
> > it still overloads.
> >
> > Appearently my default of 1,000 pps is fine for normal use but too low
> > for some edge cases.
> >
> > Could you check the MySQL source code if it has a setsockopt() setting
> > the TCP_NODELAY option?  That would help to explain a lot.
> >
> > --
> > Andre
> 
> This might nerf the protection a bit, but could reduce the packet counter
> once for each socket write the local machine does?  That should protect
> chatty applications, but still detect those that are just flooding data to
> a bulk service like ftp or smtp.

It doesn't help in this case as we don't have any control over the sender
and thus don't know whether he has set TCP_NODELAY.

I suspect that the database(s) are setting TCP_NODELAY and do a write()
for every record they have retrieved from the query result.  Yet one more
who has been fooled by the name "TCP_NODELAY".  The database would be
better off and have more performance not using nodelay and let Nagle do
its work.

-- 
Andre


More information about the cvs-src mailing list