Handling 500k concurrent connections on Linux

John Watson john at disqus.com
Wed Oct 10 20:11:42 UTC 2012


1) Error logs are clean (except for some 404s)

2) nginx.conf and sysctl.conf: https://gist.github.com/0b3b52050254e273ff11

Set TX/RX descriptors to 4096/4096 (maximum):
    ethtool -G eth1 tx 4096 rx 4096

Disabled irqbalanced and pinned IRQs to CPU0-7 for NIC

Don't know exact amount, but a good majority of the connections are
sitting idle for 90s before being closed.

Some graphs on the network interface for past couple days:
https://www.dropbox.com/s/0bl304ulhqp6a4n/push_stream_network.png

Thank you,

John W

On Wed, Oct 10, 2012 at 01:05:05PM +0400, Andrew Alexeev <andrew at nginx.com> wrote:
> John,
> 
> On Oct 9, 2012, at 11:10 PM, John Watson wrote:
> 
> > I was wondering if anyone had some tips/guidelines for scaling Nginx on
> > Linux to >500k concurrent connections. Playing with the
> > nginx_http_push_stream module in streaming mode. Noticing periodic slow
> > accept and/or response headers. I've scoured the Internet
> > looking/learning ways to tune Nginx/Linux but I think I've exhausted my
> > abilities.
> > 
> > Any help would be appreciated.
> > 
> > Hardware
> > Dual Nehalem 5520
> > 24G RAM
> > Intel 82576 (igb)
> > Ubuntu 12.04.1 (3.2.0-31-generic x86_64)
> > 
> > Thank You,
> > 
> > John W
> 
> I'd assume you've already checked/fixed the following, right?
> 
> 1) Error logs - anything wrong seen in there?
> 
> 2) http://nginx.org/en/docs/ngx_core_module.html#multi_accept and http://nginx.org/en/docs/ngx_core_module.html#accept_mutex - did you try it on/off?
> 
> 3) file descriptors limits (cat /proc/sys/fs/file-max, sudo - nginx && ulimit, worker_rlimit_nofile)
> 
> 4) sysctl net.ipv4.ip_local_port_range (if you're aiming at proxying all those connections to upstreams)
> 
> Additional information about what's happening in all those 500k connections might be helpful, as well as the relevant configuration section :)
> 
> Hope this helps
> 
> 
> -- 
> AA @ nginx
> http://nginx.com/support.html
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20121010/b2d53833/attachment-0001.bin>


More information about the nginx mailing list