Linux tcp socket相关参数设置

内容主要从网络上摘抄的,稍作了一下整理

来源1:

http://www.cnblogs.com/alli/archive/2011/01/11/1932599.html

1.进程打开文件数限制

 ulimit –n   == ulimit –n 1000000

 这表示当前用户的每个进程最多允许同时打开1024个文件,这1024个文件中还得除去每个进程必然打开的标准输入,标准输出,标准错误,服务器监听socket,进程间通讯的unixsocket等文件,那么剩下的可用于客户端socket连接的文件数就只有大概1024-10=1014个左右。也就是说缺省情况下,基于Linux的通讯程序最多允许同时1014TCP并发连接。

 典型现象:当connect,accpet 1000个左右连接后开始失败。

 

 

2、网络内核对TCP连接的有关限制

2.1 端口号范围限制

 net.ipv4.ip_local_port_range = 1025 65000

 到同一个主机的连接,超过端口用完后就会失败,这就是我们经常在网上看到的,说客户端最多只能向服务器发起6万多个连接。

2.2 iptable netfilter

第二种无法建立TCP连接的原因可能是因为Linux网络内核的IP_TABLE防火墙对最大跟踪的TCP连接数有限制。此时程序会表现为在connect()调用中阻塞,如同死机,如果用tcpdump工具监视网络,也会发现根本没有TCP连接时客户端发SYN包的网络流量。

net.ipv4.ip_conntrack_max = 10240

3.进程号

cat /proc/sys/kernel/pid_max

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'

 

4. tcp 协议栈参数

 待续...

 

原文地址:https://www.cnblogs.com/yizhinantian/p/2004347.html