【转载】linux服务器支持的TCP连接数
转载自 https://www.toutiao.com/i6904868846055391751/?timestamp=1607907150&app=news_article&group_id=6904868846055391751&use_new_style=1&req_id=20201214085230010202091096506F4443
TCP连接四元组:源IP地址、源端口、目的IP地址、目的端口
结论:和服务器的内存大小,服务器的内存分配设置,TCP连接传输的数据量 等有关
nginx的端口可能指定的是80端口,目标IP是服务器本身,所以源IP和源端口是可变的
linux中一切皆文件,所以tcp连接(socket)也会创建文件(内存文件),不会创建在磁盘上,或者说是一个文件标识符(file descriptor),类似文件,操作的接口和文件相同,都是open,close
如果同时保持很多个TCP连接,就是系统会打开很多个socket的标识符,打开文件会消耗内存资源
linux系统出于安全角度的考虑,在多个位置都限制了可打开的文件描述符的数量,包括系统级、用户级、进程级。这三个限制的含义和修改方式如下:"
- 系统级:当前系统可打开的最大数量,通过fs.file-max参数可修改
- 用户级:指定用户可打开的最大数量,修改/etc/security/limits.conf
- 进程级:单个进程可打开的最大数量,通过fs.nr_open参数可修改
另外tcp连接还会有数据传输,就要有接收的缓存区,即使是空的连接不传数据,也会默认分配一定的大小
可以通过命令来查看接收缓存区大小
sysctl -a | grep rmem
4096代表TCP连接所需分配的最少字节数默认4k内存,16777216代表最大会分配16M
综上,服务器本身内存的大小 + 服务器的文件描述符最大打开数的配置 + TCP连接的传输的数据量
三个主要因素影响了一台linux服务器的TCP连接数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!