有人说linux的TCP连接数量最大不能超过65535个吗,是真的吗?
linux的TCP连接数量最大不能超过65535个,这种说法是错误的。
一、TCP最大连接数和端口数量没有必然联系
TCP连接是服务器IP端口和客户端IP端口组成的,对于服务器而言,一般一个服务器只监听一个端口,而客户端是可以不计其数的。一个连接由一个5元组决定(protocol,local IP,local port,remote ip,remote port),对于TCP,protocol固定是TCP,还有四个元素。对于服务器来说,local port一般是固定的,比如HTTP(80),但是remote ip和remote port没有限制。也就是说,可以有百万千万的并发。如果并发量能达到百万千万量级,那么不会只有一个服务器,一般都会是一个服务集群。
二、TCP连接数是和内存正成比的
客户端和服务器建立的每个TCP连接都会占用服务器内存,所以最大TCP连接数和内存成正比。简单估算为最大内存除以单TCP连接占用的最小内存。
三、linux对tcp数量限制是为了文件管理方便
1、Linux操作系统中,一切都是文件。所以每个TCP连接,都会打开一个文件。为此Linux操作系统限制了每个用户能打开的文件数量,通过ulimit -n 查看。当然,我们也可以对此进行修改,修改方式如下:
vi /etc/security/limits.conf文件,在文件中添加如下行(限制修改为10240):
speng soft nofile 10240
speng hard nofile 10240
2、Linux操作系统对所有用户最大能打开文件的限制:cat /proc/sys/fs/file-max。
3.网络核心模块对tcp连接的限制(最大不能超过65535)。
4、防火墙管理策略也会对tcp连接数量进行限制。
基于以上的原因,在Linux操作系统中,对TCP连接数量的限制依次有:端口数量限制,网络核心限制,最大文件数量限制(因为每建立一个连接就要打开一个文件),防火墙限制,用户打开文件限制。但并不存在65535这个数量限制。
2023-07-25 广告