linux 最多能创建多少个 TCP 连接?


tcp连接四元组:源ip,源端口 <==> 目标ip,目标端口

连续对同一个目标ip及端口进行tcp连接的建立,最多建立的连接个数受服务器的端口范围限制


约束一:服务器的端口范围

ERROR: connect cannot assign requested address

linux对可使用端口范围限制

cat /proc/sys/net/ipv4/ip_local_port_range
1024 65000

自定义端口范围

vim /etc/sysctl.conf

# 添加一行记录
net.ipv4.ip_local_port_range= 60000 60009

# 保存后执行
sysctl -p /etc/sysctl.conf

连续对同一ip端口建立连接,在服务器端口不够时,切换目标端口可以继续申请连接(只要四元组不重复即可)


约束二,服务器文件描述符限制

ERROR: socket too many open files

文件描述符不够用了

每一个tcp连接对应一个文件描述符

linux对可打开的文件描述符数量限制

# 系统级:当前系统可打开的最大数量
cat /proc/sys/fs/file-max
# 用户级:指定用户可打开的最大数量
cat /etc/security/limits.conf
# 进程级:单个进程可打开的最大数量
cat /proc/sys/fs/nr_open

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

echo 100 > /proc/sys/fs/nr_open

约束三:系统线程

在多线程并发模型下:每新建一个TCP连接都需要开启一个线程,当开启连接数量过多时,因为线程上下文切换而导致系统响应越来越慢

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

切换到IO多路复用模型


约束四:系统内存

ERROR: out of memory

每个TCP连接本身,以及连接所用到的缓冲区,都需要占用一定的内存

在系统内存足够大的情况下,最终也会因为大量TCP占用线程而导致CPU满载,从而达到瓶颈

总结

linux服务器开启最大TCP连接数?

首先在目标IP和端口固定的情况下,取决于系统对可开启端口范围的限制是多少

在端口范围最够大的情况下,取决于文件描述符的限制(三个级别:系统、用户、进程)

文件描述符限制足够大的情况下,取决于线程模型,如果是多线程模型,即一个TCP连接占用一个线程,那么可能会因为上下文切换而导致CPU满载

加入采用IO多路复用的情况下,仍然需要考虑系统内存是否足够支撑海量的TCP连接,因为每一个TCP连接会占用一些内存

最后如果系统内存也足够大,那么最终的瓶颈会是CPU的线程上下文切换,最终会导致系统卡死

计算机保研面试复习专业课篇(408)主要涵盖了计算机科学与技术专业本科生在保研面试中常常需要准备的四门核心专业课程,包括数据结构、计算机网络、操作系统和计算机组成原理。这四门课程是计算机专业教育的基础,无论是在保研还是考研面试中都占有十分重要的地位。了解这些课程的常问知识点,对于提升面试竞争力至关重要。数据结构是计算机存储、组织数据的方式,它使得数据的查找和更新更加高效。在面试中,关于数据结构的常见问题可能包括数组、链表、栈、队列、树、图等基本数据结构的定义、特点和应用场景。此外,还会涉及排序算法、搜索算法以及树和图的遍历、生成树算法等。面试者需要能够清晰地解释这些算法的工作原理,以及它们的效率如何。计算机网络部分,面试者需要掌握网络基础知识,如网络分层模型(OSI七层模型和TCP/IP四层模型)、IP地址、子网划分、TCP/IP协议族中的重要协议如IP、TCP、UDP等的工作原理及其应用。同时,网络安全、网络性能优化、以及一些常见的网络应用如DNS、HTTP/HTTPS、电子邮件和FTP的工作原理也是面试中可能出现的问题。操作系统部分,涉及的主要知识点包括进程管理、内存管理、文件系统以及I/O系统。面试者应该熟悉进程状态、进程调度算法、同步与互斥机制、死锁的产生条件及避免方法等。对于内存管理,重点内容可能包括分页、分段、虚拟内存等概念,以及它们如何优化内存使用。文件系统的层次结构、文件的存储方式、目录的组织方式也是面试中的常考点。计算机组成原理部分,面试者需要对计算机硬件组件有深入理解,包括中央处理器(CPU)、存储器、输入输出设备等。常见的面试问题会围绕CPU的控制单元、运算单元和内部寄存器的设计,存储层次结构包括高速缓存、主存和辅存的工作原理,以及指令周期、指令集架构等概念。计算机保研面试复习专业课篇(408)强调了专业知识的系统性和深度,要求面试者不仅能够熟练掌握理论知识,还要具备解决实际问题的能力。准备这些内容,对于希望在计算机领域深造的学生来说是十分必要的。通过对这些课程的复习,学生可以更好地展示自己在计算机科学方面的专业素养,为保研面试做好充分的准备。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hongmin.shm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值