[OpenSIPS-Users] Tuning for maximum number of TCP connections
Gavin Murphy
gavin.murphy at newpace.ca
Fri Apr 26 16:44:21 CEST 2013
We're trying to load up opensips with as many TCP connections as we
possibly can. So far we've got it to about 82K, but failures start
occurring at that point. We have 8GBs of RAM allocated to the server as
a whole (is that enough? we don't appear to be exhausting it). We've set
the following parameters for OpenSIPS:
tcp_children=32
tcp_max_connections=250000
tcp_connection_lifetime=610
tcp_keepalive=1
tcp_keepcount=3
tcp_keepidle=300
tcp_keepinterval=300
We have also set ulimit -n 1024000 and ulimit -s 768.
The scenario is that our load driver establishes "client" connections to
OpenSIPS via TCP, and sends REGISTERs over those connections. While the
REGISTERs come in over TCP, they are sent out to our registrar via UDP.
Around the point where we get to the 40K connection mark we start seeing
the following in the logs:
Apr 25 12:28:19 blackmamba rcsuser-opensips[27540]:
ERROR:core:tcp_blocking_connect: poll error: flags 1c
Apr 25 12:28:19 blackmamba rcsuser-opensips[27540]:
ERROR:core:tcp_blocking_connect: failed to retrieve SO_ERROR (111)
Connection refused
Apr 25 12:28:19 blackmamba rcsuser-opensips[27540]:
ERROR:core:tcpconn_connect: tcp_blocking_connect failed
Apr 25 12:28:19 blackmamba rcsuser-opensips[27540]: ERROR:core:tcp_send:
connect failed
Apr 25 12:28:19 blackmamba rcsuser-opensips[27540]: ERROR:tm:msg_send:
tcp_send failed
It almost appears as though opensips is trying to establish a connection
somewhere and is being refused. Except that it shouldn't be trying to
establish any, unless it's for internal purposes. Unfortunately the logs
aren't clear on that point (in terms of what connection is trying to be
established).
One other thing that appears puzzling: it seems that one of the opensips
processes is bearing most of the brunt. I am assuming that it's the
instance that is actually accepting the connections, and that the
subsequent (low) amount of traffic is then handed off to the children.
But if that's the case, it also means that it's handling a lot of the
workload, and I was hoping that it would be more evenly distributed.
Here is a snapshot of the opensips processes in top:
27577 rcsuser 20 0 6516m 2.5g 2.5g R 76 31.9 8:15.26 opensips
27542 rcsuser 20 0 6516m 181m 180m S 16 2.3 0:54.60 opensips
27541 rcsuser 20 0 6516m 182m 180m S 14 2.3 0:54.47 opensips
27539 rcsuser 20 0 6516m 182m 180m S 13 2.3 0:53.75 opensips
27540 rcsuser 20 0 6516m 182m 180m S 11 2.3 0:53.64 opensips
27545 rcsuser 20 0 6516m 37m 29m S 0 0.5 0:01.03 opensips
27551 rcsuser 20 0 6516m 35m 27m S 0 0.4 0:00.94 opensips
27553 rcsuser 20 0 6516m 36m 28m S 0 0.5 0:00.95 opensips
27555 rcsuser 20 0 6516m 37m 29m S 0 0.5 0:00.99 opensips
27557 rcsuser 20 0 6516m 35m 27m S 0 0.4 0:00.92 opensips
27558 rcsuser 20 0 6516m 35m 27m S 0 0.4 0:00.90 opensips
27560 rcsuser 20 0 6516m 36m 28m S 0 0.5 0:00.98 opensips
27563 rcsuser 20 0 6516m 36m 28m S 0 0.5 0:00.94 opensips
27564 rcsuser 20 0 6516m 36m 27m S 0 0.5 0:00.93 opensips
27565 rcsuser 20 0 6516m 36m 28m S 0 0.5 0:00.93 opensips
27567 rcsuser 20 0 6516m 36m 28m S 0 0.5 0:00.95 opensips
27575 rcsuser 20 0 6516m 36m 28m S 0 0.5 0:00.95 opensips
27576 rcsuser 20 0 6516m 36m 28m S 0 0.5 0:00.98 opensips
So basically what I'm looking for is some help on getting the operating
system and opensips tuned to the point where we can get substantially
more than 80K connections. Or am I asking for too much?
Thanks,
Gavin
More information about the Users
mailing list