lots of connections on TIME_WAIT state
Peter Langhans
peter.langhans at incipience.co.uk
Wed Apr 8 21:10:25 MSD 2009
just a shot in the dark, but do you have any dynamic javascript request on
page load? Could be that these opens the additional connections. Most
browsers can do 2 simultaneous requests, given the concurrency rate, that
could easily end up at 3xclients, which would still not explain the
15,000...
hmmm...
On Wed, Apr 8, 2009 at 5:51 PM, Anıl Çetin <anil at saog.net> wrote:
> Thanks for answer Maxim, but it is exactly "out of sockets" openvz has
> resource limit option for opened tcp sockets (numtcpsock) and when time
> comes there becomes thousands (ten thousands approx.) of open connections
> while there is only 2000-3000 clients. Apache keepalive is off also. I read
> about TIME_WAIT state, I know the connection is reusable but why there is so
> much sockets opened? As my knowledge while nginx is a proxy it opens 2
> connections for one client with apache, isnt it right? So there must be
> 4000-6000 tcp sockets not 10000-15000.
>
> Isn't "/proc/sys/net/ipv4/tcp_tw_recycle" turned on by default in linux?
> This can be my problem I will check and try it. May be it isnt using sockets
> in TIME_WAIT states and timeout for connections in this state is very big,
> so that it is opening new connections again and again without dropping any
> of before opened sockets.
>
>
> Maxim Dounin yazmış:
>
> Hello!
>
> On Wed, Apr 08, 2009 at 05:56:51PM +0300, Anıl Çetin wrote:
>
>
>
> So, what is the solution? I have exactly the same problem, my nginx is
> in a virtual server (openvz), working as a proxy server in front of
> apache and oftenly (after 2k-3k requests) server becomes "out of
> sockets" even I raise the allowed numbers of sockets to a very big
> number.
>
>
> You probably "out of ports", not out of sockets. Solution is to
> configure TIME_WAIT reusing (tw_reuse, tw_recyle or something like
> depending on your OS). You may also allow your system to use more
> ports for outgoing connections.
>
> Under FreeBSD reusing of TIME_WAIT sockets is the default, and
> portrange for outgoing connections may be tuned via
> net.inet.ip.portrange.hifirst and net.inet.ip.portrange.hilast
> sysctls.
>
> Not sure about Linux, but Google suggests reusing of TIME_WAIT
> sockets may be turned on via /proc/sys/net/ipv4/tcp_tw_recycle.
>
> Maxim Dounin
>
>
>
> Igor Sysoev yazmış:
>
>
> On Wed, Apr 08, 2009 at 10:47:16AM +0300, Artis Caune wrote:
>
>
>
>
> 2009/4/7 Deepan Chakravarthy <codeshepherd at gmail.com> <codeshepherd at gmail.com>:
>
>
>
> Hi,
> I am using nginx with fast-cgi . When I run
> $netstat -np | grep 127.0.0.1:9000
> I find lot of connections in TIME_WAIT state. Is this because of high
> keepalive_timeout value ? When lot of people use (5 requests per second)
> nginx takes more time to respond. System load goes more than 10 during
> peak hours.
>
>
>
> This is because of how TCP works.
>
>
>
>
>
> debian:~# netstat -np | grep 127.0.0.1:9000
> tcp 0 0 127.0.0.1:9000 127.0.0.1:45603
> TIME_WAIT -
> tcp 0 0 127.0.0.1:9000 127.0.0.1:45601
> TIME_WAIT -
>
>
>
> If you were on FreeBSD, you could disable TIME_WAIT on loopback
> completely by setting:
>
> sysctl net.inet.tcp.nolocaltimewait=1
>
>
>
> Due to the incorrect implementation this remedy is worse than the disease.
> The net.inet.tcp.nolocaltimewait relys on unlimited RST delivery, therefore
> if there are too many RSTs, they will be limited by net.inet.icmp.icmplim
> and you will have a lot of sockets in the LAST_ACK state on server side
> instead of lot of sockets in the TIME_WAIT on client side.
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx/attachments/20090408/c178b5e4/attachment.html>
More information about the nginx
mailing list