记一次网络相关的技术问题答疑

a772e0cd50c047eab71c99c7c9960907.gif

大家好,我是飞哥!

前段时间飞哥参加了一期 OSChina 官方举办的「高手问答」栏目。在这个栏目里,我和 OSChina 的网友们以《深入理解 Linux 网络》为主题,对大家日常所关心的一些问题展开了一些技术探讨。

c8b6ab512947e72189b44ffcd350ad20.png

今天我把这个活动中探讨的内容都记录下来,分享给大家!

65576208fe157f7715cc3ec52b2f08df.png

问题1:虚拟化时代,65535 的端口号更不够用了吧?

问:一个 linux 最多能 65535 个端口,那么在虚拟化盛行的现在,这个 65535 更容易被占满了吧,怎么处理?

答:首先一个 linux 最多能 65535 个端口的说法是不确切的。因为即使在一台 Linux 上也是可以配置多 ip 的,每个 ip 都可以有 65535个 端口可用。

另外再说说现代的虚拟化。在 2008 年发布的 Linux2.6.24 内核版本里,引入了一个叫网络命名空间的东东。这个就是现代容器虚拟化的基石。在每一个命名空间里,都可以拥有自己独立的 ip、端口号、路由表等等网络资源。对于现在常用的 docker ,一个 docker 里就对应一个网络命名空间(非host模式下)。每个容器都是 65536 个端口可用的。

另外还有一个要知道的是,如果连接不同的服务器端的时候,即使只有一个 ip,同一个端口号也是可以用于连接不同的服务端的。所以不要担心 65535 的限制。

问题2:访问本机的 ip 会通过交换机或者路由器吗?

问:ip 填写自己本机的 ip 会通过交换机或者路由器吗。

答:不会的,你可以试试,无论是使用本机 ip,还是 127.0.0.1 都是只过回环设备 lo。通过在 lo 上抓包即可看到,而在真正的物理网卡下是抓不到包的。

问题3:服务器端只有一个端口,收发请求不会乱吗?

问:老师我本来没觉得我不明白 但是看了上面 列举的问题 <一台机器最多能支持多少条 TCP 连接>就有点疑惑了  就是服务器作为接收 WEB 或者其他端请求时  不管是 80 还是 443, 对外暴露的基本上是一样的端口,http请求来了之后 请求之间不会相互干扰吗?或者同一个端口可以有多少个http请求,我自己都凌乱了,谢谢老师!

答:我们分三步来理解你说的问题。

第一、服务器端在接收到新连接的时候会创建新的 socket 出来。这个新的socket 上有完整的四元组(内部源 IP、源端口、目的 IP 和目的端口)信息,并以 hashtable 的方式管理。

第二、TCP 网络包体内部源 IP、源端口、目的 IP 和目的端口等信息都是携带在包头里的。

第三。内核在接收到网络包的时候,在协议栈处理的时候会解析包头,根据这个包头中完整的四元组和内核中 hashtable 中管理的 socket 进行匹配,只有四元组信息完全一致,才能把接收到的数据放到该 socket 的接收队列中。不同的请求的 socket 上四元组信息并不完全一致,所以请求之间不会相互干扰。

问题4:网上著名的 C10K 并发连接问题 具体是怎么回事?

问:网上著名的 C10K 并发连接问题 具体是怎么回事?

答:C10K 问题算是历史上的一个问题,在 Linux 上最早的开发模型里,只有线程编程模型,来一个用户就需要使用一个进程来处理。但随着互联网发展的井喷,服务器端要支持的并发数越来越高。如果还继续沿用这个模型的话,就需要投入巨量的服务器资源。所以 C10K 问题的提出,就是要处理如何让一台服务器同时处理 1 万个用户连接请求。在 epoll 诞生以后,C10K 已经不是问题了。

问题5:网络丢包该如何排查

问:刚好遇到疑似 TCP 传输丢包的问题,想请教老师科普下这种问题排查的整体思路和顺序是什么

答:TCP 传输丢包问题使用 tcpdump 抓包看看,看看重试是如何发生的,使用 wireshark 打开,使用过滤器 tcp.analysis.retransmission 找到重传的包。还有一个基于 eBPF 的轻量级工具 tcpretrans ,也可以试试。不过 eBPF 对 Linux 版本要求较高。

问题6:一台机器最多能支持多少条 TCP 连接?

问:一台机器最多能支持多少条 TCP 连接? 这个公式是什么?怎么计算,64GB 的 Linux 服务器,可以支持多少条?

答:一台机器最多能支持多少条 TCP 连接。只说服务器端吧,一是受限于 Linux 里配置的可打开文件句柄数等内核参数,但这些都很好修改,调几个参数就行了。二就是内存了,这个是硬性限制。最少也得是 3.3 KB 左右。所以如果算极限情况下的TCP连接数,64 GB 除以 3.3KB 就行了。但一般都会给收发缓存区以及其它应用留一些 buffer

问题7:一条 TCP 需要消耗多大的内存

问:一条 TCP 连接需要消耗多大的内存 ,像mysql这种连接数,和用户登录这种 session 信息,也是一条 tcp 连接吗?

答:TCP 连接在内核里消耗内存主要是两块,一是表示 TCP 连接的 socket,大约是 3.3K 左右。二是接收和发送数据的缓存区,这个可大可小,大了收发速度更快,小了更省内存。但在较新的版本里,只要收发结束,内存就都可以回收了。你说的 mysql 的用户登录、session 等信息这个数据 TCP 里传输的数据。这个数据就看用户进程里是怎么存储的了,如果存在内存里就占内存,存到磁盘里就占磁盘。

问题8:CPU 飙高到 100%

问:老师好,我的线上服务总是莫名其妙 CPU 飙高到 100%,然后到某一个时刻突然掉下来,内存和 IO 几乎都正常值,请问应该从哪方面入手排查呢?

答:这个就得具体问题具体分析了。得看看是用户态内存消耗的高,还是内核态消耗的高。相关的命令有 top、vmstat、sar、mpstat 等。如果是内核态就用 strace 命令统计一下系统调用的耗时情况,看有没有耗时特别长的。还可以考虑使用 perf 火焰图分析一下。

问题9:有没有推荐网络调优和监控的工具

问:请问张老师, 有没有推荐网络调优和监控的工具。

答:网络比较复杂,最好先了解它内部的工作原理,看一下《深入理解Linux网络》,然后再找相应步骤的工具,可以看看《性能之巅》,这样更好一些。

问题10:net.ipv4 有非常多的属性,难道要挨个背下来?

问:net.ipv4 有非常多的属性,难道要挨个背下来?现在就处于不知道从何看起的阶段,不知道直接看您的这本书是否能帮忙建立起知识结构,能知其然且知其所以然

答:不需要背,最重要的是要理解网络工作底层工作原理,这样再看这些参数的时候就非常容易理解了。这就好比庖丁解牛,你如果对牛的骨骼肌肉的内部原理理解非常透彻的时候,你解牛的时候自然就非常容易。而不是去死记硬背这些内核参数。

咱们《深入理解Linux网络》就是这样一本介绍网络底层工作原理的书。书中会介绍到半连接队列、全连接是如何工作的,理解这个原理你就能轻松理解 syncookie 这个参数了。而且再遭遇 TCP 中的三次握手等问题的时候,你也能快速排查和定位原因了。

问题11:线上被冲垮,帮忙 review 一下

问:你好,曾经解决过一次线上服务器高峰时被冲垮的问题,原因是网络相关,靠着搜索引擎解决了后还是处于知其然不知其所以然的情况,麻烦帮忙 review 下

首先高峰被冲垮,看了 mysql ,程序都没异常,怀疑是网络问题。然后 netstat -n | awk 统计各种tcp连接状态的数量,发现别的都很少,established 单机上万了,time_wait 也非常高。带宽直接被打满

然后修改 file-max 和 sysctl 配置了如下和一些其他属性后,time_wait 瞬间下降。

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

最后又加上 nginx ip 限流解决。虽然搜索到了生效的几个 net.ipv4 配置的意思,但是依然不知道为什么会有这么多的 time_wait

答:你的问题的根本原因是在大流量(可能是攻击流量)请求的情况下使用了短连接。每一个短连接的主动释放连接的一方的 socket 都不会直接消失,而是会先释放一部分内核对象后进入 TIME_WAIT 状态,然后这个 socket 会一直占用一个端口号大约 2 分钟左右。recycle 和 reuse 的共同的作用都是尽量减少 socket 在 TIME_WAIT 上呆的时间,这样就能尽快释放端口。尽快地退出 TIME_WAIT 可以释放端口,保证后面的用户来的时候,服务器请求如 mysql 等数据服务器的时候,可以有充足的端口可用。

问题12:Linux 网络连接建立以后,在文件层发生的变化是什么样的?

问:Linux 网络连接建立以后,在文件层发生的变化是什么样的?都说linux中所有的东西是文件,我如何通过网络连接去寻找该连接对应的文件?是一个文件还是多个文件?

答:linux一切皆是文件,说的其实是一个 struct file 结构体。磁盘上的文件,socket 都有这样一个 struct file 对象,是一个内核上层的抽象。

但是在内核底层上磁盘文件、socket 还是完完全全不一样的东西。cat命令也并不能把一个socket中的数据内容给展示出来。如果你非得想用类似 cat 的功能,linux 下有个 ncat 命令你可以玩玩。

服务器端

# ncat -v -lp 8081
Ncat: Version 6.40 ( http://nmap.org/ncat )
......
hello world

客户端

# nc -v 127.0.0.1 8081
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:8081.
hello world

问题13:有没有通用的线上配置核心参数

问:关于连接和性能瓶颈,线上我们经常是遇到问题再去搜方案,有没有通用的必须要在线上配置的核心参数呢。
答:通用的其实内核都已经用默认值的方式给弄好了。无奈业务之间差异太多,所以想一套参数适配所有的业务,基本上还是不可能的。还得靠工程师根据当前业务的特点来适当灵活调整

想看这次活动的同学可以点击左下角的「阅读原文」!

3e73778600881129c01ca2a95ba8624c.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hexo博客框架—轻量、一令部署

简介&#xff1a;Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown&#xff08;或其他渲染引擎&#xff09;解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。Hexo支持Github Flavored Markdown的所有功能, 甚至可以整合Octopress的大多数…

被你质疑价值的混沌工程,阿里巴巴已落地实践了9年

简介&#xff1a;无可讳言&#xff0c;对于混沌工程的价值&#xff0c;目前在业内还没有一个明确的度量标准&#xff0c;但是可以通过简单的例子来有效佐证。据中亭介绍&#xff0c;一方面可以先选定一个场景&#xff0c;从结果上看&#xff0c;混沌工程可以保证场景不劣化&…

同为博客,不同风格 ——Hexo另类搭建

简介&#xff1a;通过阿里云云开发平台快速由Hexo创建赛博朋克风格的博客。 一 、通过云开发平台快速创建初始化应用 1.创建相关应用模版请参考链接&#xff1a;Hexo博客框架—轻量、一令部署 2.完成创建后就可以在github中查看到新增的Hexo仓库 二 、 本地编写《赛博朋克风…

即学即会 Serverless | 初识 Serverless

简介&#xff1a;Serverless 架构被越来越多的业务所采纳&#xff0c;成为其技术选型&#xff0c;大多数开发者已经跨越对 Serverless 概念了解&#xff0c;切实向落地实践出发。本文带大家一探究竟&#xff0c;为什么说 Serverless 可以帮助开发者聚焦核心业务价值&#xff0c…

宜搭小技巧|巧用审批按钮,流程随心流转

简介&#xff1a;一键启用流程退回&#xff0c;再也不用担心“一错回到提交前”&#xff01; 今天&#xff0c;宜小搭提交了产品采购申请单&#xff0c;却因某项产品选错分类被领导拒绝&#xff0c;宜小搭只能重新填写再提交&#xff0c;这样做既麻烦也影响工作效率。 流程已…

阿里云将投入70亿元建国际生态、增设6大海外服务中心

9月22日消息&#xff0c;阿里云在泰国举办的国际云峰会上宣布将继续加快海外市场布局&#xff0c;未来三年投入70亿元建设国际本地化生态&#xff0c;并在海外增设6个服务中心&#xff0c;分别位于波尔图、墨西哥城、吉隆坡、迪拜等地。近年来&#xff0c;阿里云在海外市场获得…

开源|优酷动态模板研发体系为分发提效30%

简介&#xff1a;动态模板技术方案将客户端研发链路实现了串联&#xff0c;通过完备的工具化支撑体系&#xff0c;让开发者可以高效完成组件由原始设计稿到可运行代码的最短通路&#xff0c;本文将对研发体系中涉及到的核心模块就行介绍&#xff0c;希望对技术社区及广大开发者…

比心云平台基于阿里云容器服务 ACK 的弹性架构实践

简介&#xff1a;本文主要探讨比心云平台如何利用阿里云容器服务 ACK&#xff0c;来构建应用弹性架构&#xff0c;进一步优化计算成本。 作者&#xff1a;韩韬&#xff5c;比心技术 前言 应用容器化改造后&#xff0c;不可避免地会面临这样一个问题&#xff1a;Kubernetes 集…

程序员莫名收到谷歌转账170万元,直言:一个月没敢花

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09;近日&#xff0c;Google 公司发生一起乌龙事件&#xff0c; 意外地给一位博客和安全工程师转账近25万美元&#xff08;约合人民币174万元&#xff09;&#xff0c;当事人表示等待将近一个月…

利器解读:Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术

简介&#xff1a;通过在Anolis 5.10 内核中增强 kfence 的功能&#xff0c;实现了一个线上的、精准的、可定制的内存调试解决方案。 编者按&#xff1a;一直持续存在内核内存调测领域两大行业难题: "内存被改" 和 "内存泄漏"何解&#xff1f;本文整理自龙…

无需修改代码,用 fcapp.run 运行你的 REST 应用

简介&#xff1a;解锁客户不修改代码部署存量REST、网页应用场景&#xff0c;解决客户函数调用返回404问题&#xff0c;支持标准的网关产品与开源组件集成函数计算。 作者 | 阿里云 Serverless 技术研发 落语 背景 阿里云函数计算产品在较早的时候支持了HTTP触发器能力&…

在 Linux 中锁定和解锁用户的 3 种方法

在多用户操作的服务器中锁定&#xff08;禁用&#xff09;用户可能有多种原因&#xff0c;比如某个用户的登录密码被泄露&#xff0c;或者某个用户离职&#xff0c;但是该用户下还有部分文档未完成转移&#xff0c;而因为归档的目的暂时不删除该用户&#xff0c;而只是锁定等等…

中小企业掀起“减碳潮”,“上云”提高产品绿色竞争力

中小企业节能减碳需求正进入爆发期。4月22日世界地球日&#xff0c;近2000家中小企业已接入阿里云碳排放优化核算平台“能耗宝”&#xff0c;通过光伏装机和算法优化全年节省4.3亿度煤电&#xff0c;相当于减少44万吨碳排放。其中&#xff0c;浙江、广东及江苏的中小企业走在减…

函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务

简介&#xff1a;函数计算 HTTP 触发器支持异步调用&#xff0c;为用户搭建 WEB 服务使用函数计算作为全托管平台打通了最后一公里&#xff0c;以后 HTTP 触发器的使用者&#xff0c;也可以感受到异步调用”开箱即用“的便捷体验。 作者| 阿里云Serverless技术专家 澈尔 当前…

如何做好“防御性编码”?

简介&#xff1a;类似于“防御性驾驶”对驾驶安全的重要性&#xff0c;防御性编码目的概括起来就一条&#xff1a;将代码质量问题消灭于萌芽。要做到“防御性编码”&#xff0c;就要求我们充分认识到代码质量的严肃性&#xff0c;也就是“一旦你觉得这个地方可能出问题&#xf…

消息队列Kafka「检索组件」上线

简介&#xff1a;本文对消息队列 Kafka「检索组件」进行详细介绍&#xff0c;首先通过对消息队列使用过程中的痛点问题进行介绍&#xff0c;然后针对痛点问题提出相应的解决办法&#xff0c;并对关键技术技术进行解读&#xff0c;旨在帮助大家对消息队列 Kafka「检索组件」的特…

从这些云原生企业身上,我看到了数字化创新者该有的样子

简介&#xff1a;未来的数字世界是什么样子&#xff1f;手握云原生地图的企业&#xff0c;又将如何颠覆数字化&#xff1f;带着这些疑问&#xff0c;我们采访了教育、金融、新零售、互娱、传媒等领域的多位大咖&#xff0c;他们是数字创新的引领者&#xff0c;也是用云原生技术…

云采销:赋能企业商机转化及营销全流程数字化

简介&#xff1a;介绍云采销-企采商产品的在企业业务中的应用场景和产品功能。 云采销&#xff1a;为企业提供“采购协同工具市场资源数据增值服务”的综合性解决方案。 其中“企采商营销管理工作台”为企业提供了B2B营销全域管理系统&#xff0c;包括商机挖掘、线上推广、销…

Hadoop 王者 Cloudera 新转型,定位为混合数据公司

作者 | 宋慧 出品 | CSDN 云计算 随着 AI 等技术兴起&#xff0c;对于数据的应用分析受到了越来越多的重视&#xff0c;数据赛道热度也持续火热。大数据时代为企业提供 Hadoop 服务的 Cloudera&#xff0c;也推出了新一代数据平台 CDP&#xff0c;并逐渐替代以往的大数据平台 …

大数据在线离线一体化解决方案最佳实践

简介&#xff1a; 本文重点介绍大数据产品集通用解决方案&#xff0c;即大数据在线计算离线计算一体化解决方案&#xff0c;并通过真实案例模拟来说明此通用解决方案在具体项目中是如何落地的。 概述 本方案重点要落地的业务是中央网信办网络安全应急指挥中心相关业务&#x…