0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Linux爱好者 来源:开发内功修炼 作者:张彦飞 2020-12-29 11:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【导读】:单台 Linux 服务器可以支撑多少个 TCP 连接?关于这个问题,我想很多客户端的同学都不怎么了解,甚至于很多服务器开发也没有特意的关注。

那么这个承载数到底取决了什么,是端口数量,还是内存大小,亦或者是可创建文件句柄数量?让我们一起来了解下吧。

困惑很多人的并发问题

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

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

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

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

793b0a68-4966-11eb-8b86-12bb97331649.png

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

7968bf26-4966-11eb-8b86-12bb97331649.png

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

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

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

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

799af0c2-4966-11eb-8b86-12bb97331649.png

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

$sysctl-a|greprmem net.ipv4.tcp_rmem=4096873808388608 net.core.rmem_default=212992 net.core.rmem_max=8388608

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

79dada84-4966-11eb-8b86-12bb97331649.png

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

$sysctl-a|grepwmem net.ipv4.tcp_wmem=4096655368388608 net.core.wmem_default=212992 net.core.wmem_max=8388608

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

7a0030f4-4966-11eb-8b86-12bb97331649.png

服务端百万连接达成记

7a1500ce-4966-11eb-8b86-12bb97331649.png

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

7a44dfba-4966-11eb-8b86-12bb97331649.png

7a5f307c-4966-11eb-8b86-12bb97331649.png

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

$ss-n|grepESTAB|wc-l 1000024

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

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

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

7ae92afc-4966-11eb-8b86-12bb97331649.png

结语

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

原文标题:漫画:一台 Linux 服务器最多能支撑多少个 TCP 连接

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 互联网
    +关注

    关注

    55

    文章

    11350

    浏览量

    110467
  • Linux
    +关注

    关注

    88

    文章

    11817

    浏览量

    219555
  • 服务器
    +关注

    关注

    14

    文章

    10364

    浏览量

    91760

原文标题:漫画:一台 Linux 服务器最多能支撑多少个 TCP 连接

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    服务器数据恢复】服务器“泡水”硬盘掉线,数据竟这样恢复

    北亚企安数据恢复中心的服务器数据恢复工程师和硬件工程师到现场处理故障。服务器数据恢复工程师到达现场后发现有一台机柜未开机,经过沟通得知机房天花板渗水导致这台机柜上层的两台服务器存储设备
    的头像 发表于 01-22 17:38 1126次阅读
    【<b class='flag-5'>服务器</b>数据恢复】<b class='flag-5'>服务器</b>“泡水”硬盘掉线,数据竟这样恢复

    别再把工业边缘控制当单片机用了,它本质是一台 Linux 服务器

    在工业互联网、储能 EMS、机器人、视觉检测这些场景里,你会发现趋势: 边缘计算控制正在变得越来越像一台“小型工业服务器”。 协议要转
    的头像 发表于 01-13 16:39 446次阅读

    服务器远程连接超时以及拒绝连接的真实缘由和解决办法

    、为啥服务器远程连接老是出现“超时”或者“拒绝连接”? 不少企业在用云服务器或海外服务器时,常
    的头像 发表于 11-19 15:34 1597次阅读

    服务器数据恢复—意外断电!Linux服务器数据恢复大揭秘

    某品牌服务器+存储,安装的linux操作系统。 机房意外断电导致服务器操作系统无法正常启动,服务器管理员故障服务器进行修复操作后进入系统查
    的头像 发表于 11-18 11:20 723次阅读

    恒讯科技分析:香港服务器如何远程桌面连接和管理?

    对于选择香港服务器的企业和开发者而言,无论身在何处,稳定、安全地远程连接和管理服务器都是首要任务。恒讯科技将详细解析如何通过远程桌面连接(Windows)和SSH(
    的头像 发表于 11-06 14:18 832次阅读

    SSH 远程连接内网 Linux 服务器

    利用 ZeroNews,您可对用内网的 Linux 服务器进行统的 SSH 远程连接管理,当用户外出时,可通过 ZeroNews 分配的公网域名地址,快速访问企业内部、家庭的
    的头像 发表于 09-17 19:52 592次阅读
    SSH 远程<b class='flag-5'>连接</b>内网 <b class='flag-5'>Linux</b> <b class='flag-5'>服务器</b>

    服务器数据恢复—服务器上的卷被误删数据如何恢复?

    工作人员不慎将一台服务器上的卷误删除,服务器上有组raid5阵列。需要恢复误删除的数据。
    的头像 发表于 08-14 11:33 1113次阅读
    <b class='flag-5'>服务器</b>数据恢复—<b class='flag-5'>服务器</b>上的卷被误删数据如何恢复?

    利用Ansible自动化部署Linux服务器

    作为名在运维线摸爬滚打多年的工程师,我见过太多因为手工配置导致的生产事故。今天,我将毫无保留地分享我在大规模Linux服务器自动化管理中积累的实战经验,让你也能轻松驾驭数百
    的头像 发表于 08-06 17:59 1480次阅读

    恒讯科技分析:Ubuntu云服务器数据共享高效方案

    ,帮助您根据实际需求选择最适合的解决方案。 、NFS(Network File System)共享方案 NFS是Linux系统中最常用的文件共享协议之,适用于Linux
    的头像 发表于 07-09 21:40 1657次阅读

    cybt343026-01 scan的话,最多能scan到多少个

    我想问下cybt343026-01的模块,scan的话,最多能scan到多少个
    发表于 07-07 08:14

    CYW20719 最多多少个外部中断?

    CYW20719 最多多少个外部中断?
    发表于 07-01 07:16

    CYW20820 GATT服务器可以支持多少个来自GATT客户端的同时连接吗?

    有人能告诉我 CYW20820 GATT 服务器可以支持多少个来自 GATT 客户端的同时连接吗?
    发表于 06-30 07:47

    如何配置Linux防火墙和Web服务器

    在当今数字化时代,网络安全显得尤为重要。Linux作为种开源操作系统,广泛应用于服务器管理和网络配置中。本篇文章将详细介绍如何配置Linux防火墙和Web
    的头像 发表于 05-24 15:26 2069次阅读
    如何配置<b class='flag-5'>Linux</b>防火墙和Web<b class='flag-5'>服务器</b>

    服务器数据恢复—Linux系统服务器崩溃的数据恢复案例

    服务器数据恢复环境: linux操作系统服务器中有组由4块SAS接口硬盘组建的raid5阵列。 服务器故障:
    的头像 发表于 05-20 15:46 1009次阅读

    服务器数据恢复—服务器部分数据目录项被破坏的数据恢复案例

    一台安装linux系统的服务器意外断电。管理员重启服务器后进行检测,发现服务器上部分文件丢失。管理员没有进行任何操作,直接将
    的头像 发表于 05-08 15:16 601次阅读