Linux上最大的套接字数量

看来,服务器是有限的〜32720sockets…我已经尝试了每一个已知的变化,以提高这个限制。 但服务器保持限制在32720打开套接字,即使仍然有4Go的空闲内存和80%的空闲CPU …

这是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 

有什么想法吗 ? (到目前为止,这个问题在堆栈溢出问题上已经被问到)

我发现什么是限制一切:

 max_map_count 

感谢所有回答的人!

你正在寻找这个错误的地方; 你没有遇到用户限制,你正在运行一个系统的限制,这通常是32位系统的2的15次幂,这正是我猜测你的系统。 检查:

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

但是你也可以改变 在一个32位的机器上,2 ** 22作为绝对的上限,所以:

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

我有兴趣知道你怎么走。

如果实际上试图查看可以打开连接的最大套接字数量,可以尝试查看cat / proc / sys / net / ipv4 / ip_local_port_range; 这是内核将用于出站套接字的端口范围,并且根据您的分配它有不同的默认值。 把它设置成像“1024 65535”这样的东西,大概就像你所能得到的一样。 看看是否有帮助的事情。

对不起,如果在线索中有类似的话,但我现在没有时间阅读它们:<

首先看看你提到的套接字数量大约是最大用户进程的一半。 正如我可以猜测你有一个独立的进程,每个套接字(可以说你运行一个服务器或类似的东西)

你可以做的是在下次达到套接字的限制时检查进程的数量。

只是一个想法,我不知道是否有帮助。