TCP最大连接数问题总结

TCP最大连接数问题总结最大 TCP 连接数量限制有 可用端口号数量 文件描述符数量 线程 内存 CPU 等 每个 TCP 连接都需要以下资源 如图所示 1 可用端口号限制 Q 一台主机可以有多少端口号 端口号与 TCP 连接 是否能修改 端口号限制因素 第一

大家好,我是讯享网,很高兴认识大家。

  最大TCP连接数量限制有:可用端口号数量、文件描述符数量、线程、内存、CPU等。每个TCP连接都需要以下资源,如图所示:
在这里插入图片描述
讯享网

1、可用端口号限制

Q:一台主机可以有多少端口号?端口号与TCP连接?是否能修改?端口号限制因素?

第一:端口号是16位的,所以总共有65535个,即可创建65535个TCP连接

第二:端口分为知名端口(01023)、注册端口(102449511)、动态/私有端口(49152~65535)

第三:端口数可以修改。

//查看当前主机可用端口范围 [iot]$ cat /proc/sys/net/ipv4/ip_local_port_range 1024 65000 

讯享网

修改:vim /etc/sysctl.conf,对这个文件进行修改,只需在sysctl.conf文件中添加一行记录即可。如:

讯享网//新增100个可用端口:60000~60099 net.ipv4.ip_local_port_range = 60000 60099 

2、文件描述符限制

  每建立一个TCP连接,操作系统就得分配一个文件描述符,linux 对可打开的文件描述符的数量分别作了三个方面的限制。分别是:

系统级:当前系统可打开的最大数量,通过 cat /proc/sys/fs/file-max 查看

用户级:指定用户可打开的最大数量,通过 cat /etc/security/limits.conf查看

进程级:单个进程可打开的最大数量,通过 cat /proc/sys/fs/nr_open查看

[iot ~]$ cat /proc/sys/fs/file-max  [iot ~]$ cat /proc/sys/fs/nr_open  [iot ~]$ cat /etc/security/limits.conf ... * soft nproc  * hard nproc  

修改: 可修改单个进程最大文件描述符限制

讯享网//修改单个进程可打开的最大文件描述符限制为100 echo 100 > /proc/sys/fs/nr_open 

3、线程的限制

C10K:当服务器连接数达到 1 万且每个连接都需要消耗一个线程资源时,操作系统就会不停地忙于线程的上下文切换,最终导致系统崩溃。

传统的多线程并发模型:一个TCP连接就需要创建一个线程

I/O多路复用 :一个线程可以管理多个 TCP 连接的资源

解决: 不使用传统的多线程并发模型,而采用I/O多路复用技术

4、内存的限制

  TCP连接数过大可能会出现: ERROR: out of memory ,即内存溢出。

原因:每个TCP连接本身,以及这个连接所用到的缓冲区,都是需要占用一定内存的,现在内存已经被占满了,不够用了就会报这个错。

5、CPU的限制

  每个TCP连接都是需要占用CPU资源的,若占用CPU资源过多,则会导致死机,用户啥也干不了,然后就重启了,TCP连接也就全没了。

6、总结

资源 一台Linux的资源 一个TCP占用资源 占满的结果
CPU 看你花多少钱买的 看你用它干嘛 电脑卡死
内存 看你花多少钱买的 取决于缓冲区大小 OOM
临时端口号 ip_local_port_range 1 cannot assign requested address
文件描述符 fs.file-max 1 too many open files
进程/线程数 ulimit -n 看IO模型 系统崩溃
小讯
上一篇 2025-04-02 19:07
下一篇 2025-01-27 22:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/125774.html