网易首页 > 网易号 > 正文 申请入驻

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

0
分享至


  图片来自 Pexels

  困惑很多人的并发问题

  很多同学看到这个问题的第一反应是 65535。原因是:“听说端口号最多有 65535 个,那长连接就最多保持 65535 个了”。

  是这样的吗?还有的人说:“应该受 TCP 连接里四元组的空间大小限制,算起来是 200 多万亿个!”

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

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


  TCP 连接四元组是源 IP 地址、源端口、目的 IP 地址和目的端口。任意一个元素发生了改变,那么就代表的是一条完全不同的链接了。

  拿我的 Nginx 举例,它的端口是固定使用 80。另外我的 IP 也是固定的,这样目的 IP 地址、目的端口都是固定的。剩下源 IP 地址、源端口是可变的。

  所以理论上我的 Nginx 上最多可以建立 2 的 32 次方(ip 数)×2 的 16 次方(port 数)个连接。这是两百多万亿的一个大数字!


  进程每打开一个文件(Linux 下一切皆文件,包括 Socket),都会消耗一定的内存资源。

  如果有不怀好心的人启动一个进程来无限的创建和打开新的文件,会让服务器崩溃。

  所以 Linux 系统出于安全角度的考虑,在多个位置都限制了可打开的文件描述符的数量,包括系统级、用户级、进程级。

  这三个限制的含义和修改方式如下:

  

  1. 系统级:当前系统可打开的最大数量,通过 fs.file-max 参数可修改。
  2. 用户级:指定用户可打开的最大数量,修改 /etc/security/limits.conf。
  3. 进程级:单个进程可打开的最大数量,通过 fs.nr_open 参数可修改。

  我的接收缓存区大小是可以配置的,通过 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 内存,甚至可能更大。


  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。当然了如果数据很大的话,该缓存区实际分配的也会比默认值大。


  服务端百万连接达成记


  准备啥呢,还记得前面说过 Linux 对最大文件对象数量有限制,所以要想完成这个实验,得在用户级、系统级、进程级等位置把这个上限加大。

  我们实验目的是 100W,这里都设置成 110W,这个很重要!因为得保证做实验的时候其它基础命令例如 ps,vi 等是可用的。



  活动连接数量确实达到了 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个:



  结语

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

  作者:张彦飞

  编辑:陶家龙

  出处:转载自公众号开发内功修炼(ID:kfngxl)

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐

特鲁多首次公开表达对孟晚舟案的意见

科技生活快讯
2021-03-02 12:16:01

从一唱成名到事业凉凉,杨宗纬的失败,不仅仅是因为耍大牌

身边的旅行专家
2021-03-02 14:42:55

时隔1个月孟晚舟再出庭!新发型好优雅,踩10公分鞋尽显女将风范

时尚丽人风行
2021-03-02 19:36:28

仅2国经济正增长!G20成绩单出炉:中美差距缩小9000亿

金十数据
2021-03-03 14:41:35

河南一小区内幼儿园发生塌陷:教学楼地基裸露,楼体下方镂空

澎湃新闻
2021-03-03 11:35:04

关晓彤问贾玲,拍戏为啥直接找张小斐却不找自己,贾玲回答显情商

儿科鲍奶奶
2021-03-03 08:35:02

女强人董明珠:与亲哥“断交”20年,拒绝与90岁老母亲同住

史海残云
2021-03-01 18:43:42

湾湾“吃菠萝运动”愈演愈烈:一人一天18公斤,猪都在发抖

爱历史的熊猫
2021-03-02 19:44:13

“把你关屋里管吃管住管上网,一年二十万,你能接受吗?”哈哈哈

大哈家的二哈
2021-03-03 05:57:26

三上悠亚上身"敬畏上帝"Essentials,真正的潮神!明日花都不行!

Supreme情报网
2021-03-03 13:08:27

尼格买提:我入职央视14年,一个月工资才7000,根本不够花

旅行与世界
2021-03-03 11:59:59

锡安谈高中时期防守自己的小个子球员:尊重他的勇气

直播吧
2021-03-03 10:42:03

越来越多人,盯上了程序员的饭碗

深燃
2021-03-03 08:45:42

美可以,中国不行?布林肯提霸道要求,一消息传来,西方集体沉默

前沿时刻
2021-03-02 15:25:56

微博之夜关晓彤发现裙子脏了,立马变表情:完了,裙子要赔钱了

女人更珍贵
2021-03-03 05:16:01

美中俄印共同研究发现:中国大学生批判性思维能力下降

中新社华舆
2021-03-02 17:50:04

突发!曝中超恐迎来巨变:足协已做成重要决定,恐重创江苏天津足球

我爱国足怎么拉
2021-03-03 14:07:24

中国游客不来了,日媒:中国出现一个“夏威夷”,人们疯狂购物

明德新闻
2021-03-02 21:32:09

这种丝袜很少见嘛 闪亮的一米啊

扒圈主持人
2021-03-03 05:41:44

上《新闻联播》道歉的“辣笔小球”真面目曝光,不仅诋毁英雄,还割250万粉丝韭菜

环球人物杂志
2021-03-03 15:20:38
2021-03-03 17:33:09
十三姨太历史
十三姨太历史
网罗天下所有历史资讯
79文章数 19336关注度
往期回顾 全部

科技要闻

电动车门槛低!特斯拉能造,百度们也能?

头条要闻

政协发言人:积极应对老龄化列入今年重点协商议题

头条要闻

政协发言人:积极应对老龄化列入今年重点协商议题

体育要闻

伊布亮相音乐节 合影美女谈笑风生

娱乐要闻

漂亮姐姐!童瑶黑发红唇美艳动人

财经要闻

汽车要闻

首款纯电动轿跑SUV 沃尔沃发布C40 Recharge

态度原创

旅游
房产
艺术
本地
公开课

旅游要闻

再过10天,全国人民都会羡慕婺源了!

房产要闻

前两月房企成绩单:碧桂园万科破千亿 百强业绩翻倍

艺术要闻

安藤忠雄水之教堂复现

本地新闻

预测一下,这可能是下一个网红特饮

公开课

中国人最受不了的饮料,它排第一