Max number of socket on Linux

It seems that the server is limited at ~32720 sockets... I have tried every known variable change to raise up this limit. But the server stay limited at 32720 opened socket, even if there is still 4Go of free memory and 80% of idle cpu...

Here's the configuration

~# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63931
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 798621
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 2048
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63931
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

net.netfilter.nf_conntrack_max = 999999
net.ipv4.netfilter.ip_conntrack_max = 999999
net.nf_conntrack_max = 999999

Any thoughts ? (This question as been asked on stack-overflow with no luck so far)


Solution 1:

I have found whats was limiting everything :

max_map_count

Thanks to everyone who answered !

Solution 2:

You are looking in the wrong place for this one; you're not running into a user limit, you're running into a system limit which is generally the 15th power of 2 on a 32-bit system, which is what I'm guessing your system to be. Check:

 % cat /proc/sys/kernel/pid_max 
 32768
 %

But you can change that too; on a 32-bit machine that'd be 2**22 as an absolute upper limit, so:

% sudo bash -c 'echo 4194303 > /proc/sys/kernel/pid_max'
%

I'd be interested to know how you go.

Solution 3:

If you're actually trying to look at the maximum number of sockets you can open connections with, you might try looking at cat /proc/sys/net/ipv4/ip_local_port_range ; this is the range of ports that the kernel will use for outbound sockets, and it has different defaults based on your distribution. Setting it to something like '1024 65535' is about as wide-open as you can get it; see if that helps things.