漫画 | 一台Linux服务器最多能支撑多少个TCP连接?

一台主机最多保持65535个TCP连接吗? 微信公众号:低并发编程 原文链接:传送门 一个主机最多建立多少TCP连接?65535? 我是一个 Linux 服务器上的进程,名叫小进。 老是有人说我最多只能创建 65535 个 TCP 连接。 我不信这个邪,今天我要亲自去实践一下。 我走到操作系统老大的跟前,说: “老操,我要建立一个 TCP 连接!” 老操不慌不忙,拿出一个表格递给我,“小进,先填表吧” 我一看这个表,这不就是经典的 socket 四元组嘛。我只有一块网卡,其 IP 地址是 123.126.45.68,我想要与 110.242.68. 阅读详情

困惑很多人的并发问题

在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白。那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题。

很多同学看到这个问题的第一反应是65535。原因是:“听说端口号最多有65535个,那长连接就最多保持65535个了”。是这样的吗?还有的人说:“应该受TCP连接里四元组的空间大小限制,算起来是200多万亿个!”

如果你对这个问题也是理解的不够彻底,那么今天讲个故事讲给你听!

一次关于服务器端并发的聊天

568b62a0ffbcdf84648d6e9b92af5e3f.png

"TCP连接四元组是源IP地址、源端口、目的IP地址和目的端口。任意一个元素发生了改变,那么就代表的是一条完全不同的连接了。拿我的Nginx举例,它的端口是固定使用80。另外我的IP也是固定的,这样目的IP地址、目的端口都是固定的。剩下源IP地址、源端口是可变的。所以理论上我的Nginx上最多可以建立2的32次方(ip数)×2的16次方(port数)个连接。这是两百多万亿的一个大数字!!"

9a1d8fedf4a666dfff58b9148a4596d6.png

"进程每打开一个文件(linux下一切皆文件,包括socket),都会消耗一定的内存资源。如果有不怀好心的人启动一个进程来无限的创建和打开新的文件,会让服务器崩溃。所以linux系统出于安全角度的考虑,在多个位置都限制了可打开的文件描述符的数量,包括系统级、用户级、进程级。这三个限制的含义和修改方式如下:"

  • 系统级:当前系统可打开的最大数量,通过fs.file-max参数可修改

  • 用户级:指定用户可打开的最大数量,修改/etc/security/limits.conf

  • 进程级:单个进程可打开的最大数量,通过fs.nr_open参数可修改

473f3343d8b210935a41707b1a9e838b.png

"我的接收缓存区大小是可以配置的,通过sysctl命令就可以查看。"

$ sysctl -a | grep rmem
net.ipv4.tcp_rmem = 4096 87380 8388608
net.core.rmem_default = 212992
net.core.rmem_max = 8388608

"其中在tcp_rmem"中的第一个值是为你们的TCP连接所需分配的最少字节数。该值默认是4K,最大的话8MB之多。也就是说你们有数据发送的时候我需要至少为对应的socket再分配4K内存,甚至可能更大。"

e2f82955fb0b8370ecbe1acb204c5c3b.png

"TCP分配发送缓存区的大小受参数net.ipv4.tcp_wmem配置影响。"

$ sysctl -a | grep wmem
net.ipv4.tcp_wmem = 4096 65536 8388608
net.core.wmem_default = 212992
net.core.wmem_max = 8388608

"在net.ipv4.tcp_wmem"中的第一个值是发送缓存区的最小值,默认也是4K。当然了如果数据很大的话,该缓存区实际分配的也会比默认值大。"

b5cef42ff43beb54be0f348e3d61015b.png

服务端百万连接达成记

37a753e56e6c26f14ba52bd41c9e7bf3.png

“准备啥呢,还记得前面说过Linux对最大文件对象数量有限制,所以要想完成这个实验,得在用户级、系统级、进程级等位置把这个上限加大。我们实验目的是100W,这里都设置成110W,这个很重要!因为得保证做实验的时候其它基础命令例如ps,vi等是可用的。“

fe37d2cd0e524ab2eaf022f6ef17486c.png

b730cac29e9d5480e473f780008945da.png

活动连接数量确实达到了100W:

$ ss -n | grep ESTAB | wc -l  
1000024

当前机器内存总共是3.9GB,其中内核Slab占用了3.2GB之多。MemFree和Buffers加起来也只剩下100多MB了:

$ cat /proc/meminfo
MemTotal:        3922956 kB
MemFree:           96652 kB
MemAvailable:       6448 kB
Buffers:           44396 kB
......
Slab:          3241244KB kB

通过slabtop命令可以查看到densty、flip、sock_inode_cache、TCP四个内核对象都分别有100W个:

f582c6ef9f64e40198bd87c28158d0a4.png

b06f17875da3510b5672f17bc7d26eb4.png

结语

互联网后端的业务特点之一就是高并发. 但是一台服务器最大究竟能支持多少个TCP连接,这个问题似乎却又在困惑着很多同学。希望今天过后,你能够将这个问题踩在脚下摩擦!

Linux网络性能调优篇二:核心内核网络参数调优(sysctl)  在 Linux 网络性能优化中,sysctl 是最常用和最灵活的工具之一。它允许我们在不重启系统的情况下,动态查看和修改内核参数,从而快速验证调优效果。通过合理调整 sysctl 参数,我们可以控制 TCP 连接的行为、提高监听队列容量、扩大缓冲区大小、减少 TIME_WAIT 耗时等,从而提升高并发和大规模数据传输场景下的性能。 阅读详情

相关推荐

如何测试Linux下tcp最大连接数限制详解

主要给大家介绍了关于如何测试Linux下tcp最大连接数限制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Linux 的 TCP 连接数量最大不能超过 65535?

在使用 TCP/IP 协议时,会遇到一个经典的问题:TCP 连接数量最大不能超过 65535。这是因为 TCP 协议头中的端口号是 16 位的,因此最大只能表示 65535 个端口号。那么,服务器又是如何应对百万千万的并发连接的呢?

z1ztai的博客 2913

ArcGIS+PLUS+InVEST三件套实战:从零搞定土地利用变化与碳储量预测(附完整数据包)

本文详细介绍了如何整合ArcGIS、PLUS模型和InVEST模型,构建土地利用变化与碳储量预测的完整研究流水线。通过多情景模拟和生态系统服务评估,提供从数据准备到结果验证的实战指南,助力研究者高效完成生态评估项目。

weixin_30399821的博客 545

详解Linux服务器最大tcp连接数

在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少? 如何标识一个TCP连接 在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。 client最大tcp连接数 client每次发起tcp连接请求时,除非绑定端口,通常会让系统选取一个空闲的本地端口(local port

shames的博客 6723

[Unity]-[UI]-[Image] 关于UI精灵图资源导入设置的详细解释

如果纹理存储了有特定含义的信息,并且您需要着色器中的确切值(例如,平滑度或金属度),请禁用此属性。此选项允许将纹理编码为特定格式(RGBM 或 dLDR,具体取决于平台)并通过后期处理步骤对纹理数据进行处理(推拉式扩张通道)。使用在3D模型的专业法线贴图。通用的纹理类型,一般在Material上的材质图片参数使用,比如漫反射、法线贴图这些。​​Compression​​:ASTC 6x6(移动端)或DXT5(PC)​​Compression​​:BC5(PC)或ASTC 6x6(移动端)

sky_smile_Allen的博客 2171

Qwen3.5本地部署实战:4B模型在RTX3060上离线运行指南

大语言模型本地化部署正从云端服务转向终端设备,其核心是模型轻量化、硬件适配与推理引擎协同优化。基于INT4量化感知训练和GGUF格式支持,Qwen3.5在结构精简、Tokenizer轻量及显存友好性方面显著优于前代,使4B级别模型可在RTX 3060等中端显卡上稳定运行。该技术路径兼顾低延迟响应(<2秒)、数据隐私保障与离线可用性,广泛适用于法律文书分析、医疗文档处理、教育AI助手等对安全性与实时性双重要求的场景。本文聚焦Qwen3.5-4B量化部署全流程,涵盖llama.cpp编译调优、GPU层加载策略及

weixin_32181267的博客 366

漫画 | 一台 Linux 服务器最多能支撑多少个 TCP 连接?

互联网后端的业务特点之一就是高并发.但是一台服务器最大究竟能支持多少个 TCP 连接,这个问题似乎却又在困惑着很多同学。希望今天过后,你能够将这个问题踩在脚下摩擦!学习是一件痛苦的事情,尤其咱们号里很多读者朋友都是工作满一天了再来看我的技术号的文章的。我一直都在琢磨到底怎么样组织技术内容形式,能让大家理解起来更能省一点脑细胞呢。这篇服务器的最大并发数的文章是早就想发的,但是写了两三个版本都不满意。今天终于想出了一种让大家更容易理解的方式,算过了自己这关了。

黑鹰基地 258

2-6-1-1 QNX编程入门之进程和线程(一)

文章围绕进程和线程展开介绍。先是将进程类比为房子,线程类比为居住者,阐述其基本概念,如进程占用内存,线程可共享内存。接着讲解同步相关内容,介绍了互斥,线程通过互斥锁来控制对特定资源的访问,像使用浴室一样。还提到优先级,线程按优先级和等待时长来决定获取资源顺序。此外,说明了信号量,以厨房为例,区分计数为 1 和大于 1 的信号情况,且指出信号量可当互斥锁用,但互斥锁是特殊用途信号量,二者存在区别,最后提及后续会介绍其他同步机制。

星原飞火的博客 1324

支撑200并发_漫画:一台 Linux 服务器最多能支撑多少个 TCP 连接

(给Linux爱好者加星标,提升Linux技能)作者:开发内功修炼 / 张彦飞(本文来自作者投稿)【导读】:单台 Linux 服务器可以支撑多少个 TCP 连接?关于这个问题,我想很多客户端的同学都不怎么了解,甚至于很多服务器开发也没有特意的关注。那么这个承载数到底取决了什么,是端口数量,还是内存大小,亦或者是可创建文件句柄数量?让我们一起来了解下吧。困惑很多人的并发问题在网络开发中,...

weixin_29944883的博客 465

【C2000系列DSP的Bootloader详解】实现过程、流程图与示例代码

C2000 Bootloader 的核心逻辑可概括为 “初始化→选模式→加载程序→校验→跳转” 五步。对于小白来说,无需纠结底层寄存器配置(驱动库已封装),重点理解 “启动流程” 和 “数据传输 + 校验” 的核心思想即可。 通过本文的流程图和示例代码,相信你已经掌握了 C2000 Bootloader 的核心原理。实际开发中,可基于 TI 提供的 Bootloader 示例(C2000Ware 中自带)进行修改,快速适配自己的硬件和应用场景。

昔时扬尘处 376

豆包手机为什么能自己“玩手机”?原理是什么?豆包手机系统运行机制深度解析:读屏、抓取、推理链路全拆解

作为一个每天被前端 Bug 打醒的程序员,我这一阵子在关注“豆包手机”这个关键词,刷到的相关视频简直铺天盖地。朋友们,说句实话,我一开始也只是抱着“看看热闹”的心态,最近一位博主下面的内容,不是“它能做什么”,而是。如果你之前看过很多评测,这篇文章会给你完全不一样的视角。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1018

一台服务器上最多可以有多少个tcp连接,漫画 | 一台Linux服务器最多能支撑多少个TCP连接?...

困惑很多人的并发问题在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白。那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题。很多同学看到这个问题的第一反应是65535。原因是:“听说端口号最多有65535个,那长连接就最多保持65535个了”。是这样的吗?还有的人说:“应该受TCP连接里四元组的空间大小限制,算起来是200多万亿个!”如果你对...

weixin_39957265的博客 407

timing window file中的S L T指什么意思

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 777
上一篇: 建立大数据开发知识体系,这份指南就够了
下一篇: 京东资深架构师:学架构从三高开始学就行了
码洞
博客等级 码龄10年 41粉丝 137原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值