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

    文章

    11262

    浏览量

    107067
  • Linux
    +关注

    关注

    88

    文章

    11542

    浏览量

    215050
  • 服务器
    +关注

    关注

    13

    文章

    9880

    浏览量

    88538

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    负载均衡服务器服务器如何连接

    负载均衡服务器服务器如何连接?负载均衡服务器服务器可通过多种方式连接,包括直接
    的头像 发表于 12-09 13:41 ?577次阅读

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

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

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

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

    如何优化Linux服务器的性能

    优化Linux服务器的性能是综合性的任务,涉及硬件、软件、配置、监控等多个方面。以下是
    的头像 发表于 09-29 16:50 ?789次阅读

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

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

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

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

    freertos最多支持多少个任务

    FreeRTOS是轻量级的实时操作系统(RTOS),其设计初衷就是为了提供简单、可靠且高效的实时任务管理。关于FreeRTOS最多支持多少个任务的问题,实际上并没有
    的头像 发表于 09-02 14:21 ?2438次阅读