Large number of http connections immediately dropped

Alexander Strange astrange at
Thu Jul 17 02:09:53 UTC 2008

We're running a rather high-load webserver using FreeBSD 7-RELEASE/ 
amd64/nginx on an Intel em gigabit connection.
Performance is good for our current bandwidth use (about 20Mbit and  
~2000 connections/sec at the moment), but a large number of HTTP  
requests are being immediately dropped before getting to nginx. I see  
complaints about this with earlier versions of FreeBSD - 
  - but no solutions. Does anyone know what could be the problem, or  
anything we could do about it?

There are several other servers running earlier FreeBSDs on i386 which  
don't seem to have this problem, but I still haven't ruled out  
upstream hardware problems or Sandvine yet.

On the server:
-nginx's error log is full of "accept() failed (53: Software caused  
connection abort)", sometimes printing three or four at the same time.

-messages is full of:
Limiting open port RST response from 441 to 200 packets/sec
Limiting open port RST response from 488 to 200 packets/sec
Limiting open port RST response from 399 to 200 packets/sec
Limiting open port RST response from 434 to 200 packets/sec
Limiting open port RST response from 308 to 200 packets/sec
I'm not sure if that's related or not.



-netstat -m:
4677/6603/11280 mbufs in use (current/cache/total)
1017/2643/3660/65536 mbuf clusters in use (current/cache/total/max)
1017/1961 mbuf+clusters out of packet secondary zone in use (current/ 
9/514/523/12800 4k (page size) jumbo clusters in use (current/cache/ 
0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
3239K/8992K/12232K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/0/0 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
9204 requests for I/O initiated by sendfile
0 calls to protocol drain routines

nginx is not running any accept filters.

Locally, after sending an HTTP request, I get a normal connection  
close, then one RST with sequence 1, then another (possibly more than  
one) RST with sequence 2. I can post a tcpdump sequence if necessary,  
after I sanitize some cookies away.

More information about the freebsd-performance mailing list