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

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

    关注

    54

    文章

    11105

    浏览量

    103004
  • Linux
    +关注

    关注

    87

    文章

    11225

    浏览量

    208910
  • 服务器
    +关注

    关注

    12

    文章

    9017

    浏览量

    85182

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

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

收藏 人收藏

    评论

    相关推荐

    如何使用 Mobaxterm 建立 Linux 服务器连接

    不同的会话类型。为了连接Linux 服务器,你可以选择以下会话类型之: SSH :用于安全地连接到远程
    的头像 发表于 11-11 09:06 232次阅读

    服务器数据恢复—Linux网站服务器硬盘出现坏扇区的数据恢复案例

    服务器数据恢复环境: 一台linux操作系统网站服务器,该服务器上部署了几十网站,使用
    的头像 发表于 10-09 16:26 168次阅读

    服务器数据恢复—硬盘出现坏扇区导致网站服务器宕机的数据恢复案例

    服务器数据恢复环境: 一台linux操作系统服务器上跑了几十网站,服务器上只有
    的头像 发表于 09-12 12:02 180次阅读

    多个网站放在同一台服务器ip有什么影响?

    将多个网站放在同一台服务器上,使用同一个IP地址,可能会有以下影响: 1、资源共享:多个网站共享同一台服务器的资源,如CPU、内存、存储空间和带宽。如果其中
    的头像 发表于 09-12 11:15 334次阅读

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

    某公司一台服务器连接一台存储。该服务器安装linux操作系统,文件系统为xfs。 在运行过程中该
    的头像 发表于 08-19 10:49 249次阅读

    主机托管是多个用户共享一台服务器吗?有什么优势

    主机托管并不是多个用户共享一台服务器。主机托管是服务,客户可以将自己的硬件服务器托管给服务商,并享受专业的
    的头像 发表于 08-13 14:45 187次阅读

    如果ESP上的TCP客户端与服务器断开连接,如何启用自动重连?

    ESP - TCP 客户端 嵌入式 Linux 服务器 - TCP 服务器 如果ESP上的TCP
    发表于 07-17 06:25

    基于esp8266创建TCP服务器TCP服务器每秒自动断开连接是为什么?

    我基于 esp8266 创建 TCP 服务器。它总是每秒断开次。我不知道为什么。我已将espconn_register_time设置为
    发表于 07-15 08:26

    tcp方式连接不了服务器了,服务器代码还能开源吗?

    是在维护服务器吗?已经两天了。http方式还可以连接上,就tcp的方式不行了.服务器代码能开源吗?让我们自己搭建服务器用。
    发表于 07-15 06:53

    ESP826如何运行AP TCP服务器

    我正在开发室外远程控制系统,带有来自ESP8266 AP的专用WLAN。带有 TCP 客户端的平板电脑应连接到它,以便在 ESP 上设置
    发表于 07-09 06:27

    cybt343026-01最多能scan到多少个

    我想问下cybt343026-01的模块,scan的话,最多能scan到多少个
    发表于 03-01 06:44

    一台服务器,最大支持的TCP连接数是多少?

    很多同学第反应就是端口的限制,端口号最多是 65536,那就最多只能支持 65536 条 TCP
    的头像 发表于 01-19 18:16 5337次阅读
    <b class='flag-5'>一台服务器</b>,最大支持的<b class='flag-5'>TCP</b><b class='flag-5'>连接</b>数是多少?

    v90伺服电机最多能定位多少个位置点啊?

    v90伺服电机最多能定位多少个位置点啊?
    发表于 01-09 10:33

    LTC6804最多能支持多少个电池串联?

    关于LTC6804,技术文档里面提到堆叠式架构能支持几百电池,请问具体最多能支持多少个电池串联?谢谢!
    发表于 01-05 10:19

    ADBMS1818最多能够驱动多少个热敏电阻?

    ADBMS1818芯片VREF2缓冲第二基准电压,用于驱动多个10 kΩ热敏电阻,最多能够驱动多少个热敏电阻?
    发表于 01-03 09:31