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

    文章

    11321

    浏览量

    108875
  • Linux
    +关注

    关注

    88

    文章

    11631

    浏览量

    218027
  • 服务器
    +关注

    关注

    13

    文章

    10097

    浏览量

    90907

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

    SSH 远程连接内网 Linux 服务器

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    服务器数据恢复—服务器raid5阵列硬盘出现坏道掉线如何恢复服务器数据?

    一台服务器中有组由16块SAS接口的硬盘组建的raid5阵列。 服务器磁盘阵列中有2块硬盘离线,服务器上跑的应用崩溃。 经过后续的分析发现丢失的数据为虚拟机文件,包含4
    的头像 发表于 02-28 13:20 661次阅读
    <b class='flag-5'>服务器</b>数据恢复—<b class='flag-5'>服务器</b>raid5阵列硬盘出现坏道掉线如何恢复<b class='flag-5'>服务器</b>数据?

    服务器数据恢复—Zfs文件系统服务器数据恢复案例

    服务器数据恢复环境&故障: 一台zfs文件系统的服务器,管理员误操作删除了服务器上的数据。
    的头像 发表于 01-16 17:27 636次阅读

    termius如何使用,termius如何使用的过程,linux服务器远程连接的实用教程

            随着技术的不断进步,服务器远程连接技术也在不断提升其性能和安全性,以满足企业日益增长的需求。本文将和大家起讨论termius如何使用的过程以及Linux远程桌面
    的头像 发表于 12-19 11:31 1104次阅读
    termius如何使用,termius如何使用的过程,<b class='flag-5'>linux</b><b class='flag-5'>服务器</b>远程<b class='flag-5'>连接</b>的实用教程