性能工程高手课
庄振运
Facebook 性能优化和容量管理高级专家
24631 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
性能工程高手课
15
15
1.0x
00:00/00:00
登录|注册

28 | 网络数据传输慢,问题到底出在哪了?

RecvQ的值
SendQ的值
RecvQ的值
SendQ的值
RecvQ(Receive Queue)变化
SendQ(Send Queue)变化
根因分析方法
公司业务中的数据传输问题
基于状态机的解决方案
数据请求和传输流程图
基于状态转移的方案
网络本身是瓶颈
数据发送方是瓶颈
客户端接收数据缓慢
服务器应用程序的原因
网络的原因
客户端应用程序的原因
数据传送速度较慢
数据根本没有传递
思考题
解决方案
快速诊断方法
问题原因
问题分类
网络数据传输慢问题

该思维导图由 AI 生成,仅供参考

你好,我是庄振运。
你一定有过在网页或者手机上下载照片的体验,如果数据传输太慢,那你的体验一定十分糟糕。你看,互联网实体之间的数据快速传输对用户体验至关重要。这里涉及到的其实就是网络传输问题。所以,今天我们就通过生产实践中的案例,来探讨一下互联网服务中的数据传输性能。
说到底,网络传输问题其实就分两种:
数据根本没有传递;
数据传送速度较慢。
“数据没有传递”虽然看起来更严重,但是相对“数据传送缓慢”来说,更容易判断和解决。所以,这一讲,我们就重点解决第二种问题。我们一起来看看,为什么网络传送速度会慢,在众多原因中怎么快速诊断出关键问题来,又该如何去解决。
造成网络传输缓慢的原因很多,我们这一讲,就是帮助你快速诊断问题出在哪里:是客户端,是服务器端,还是网络本身?在此基础上,你才能专门针对具体的领域继续分析。

为什么数据传输慢?

我们先看一下,都有哪些可能的原因会导致数据传输缓慢呢?在宏观上,这种问题的可能原因可以分为三种场景:
客户端应用程序的原因;
网络的原因;
服务器应用程序的原因。
也就是说,可能是由于数据发送方过载,而没有向接收方发送数据;也可能是网络通道很慢;又或者是数据接收方的服务器太忙,从而无法从网络缓冲区读取数据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何通过观察发送端和接收端的队列情况来快速诊断网络数据传输慢的问题所在。当客户端接收数据缓慢时,接收队列非零表示客户端应用程序是性能瓶颈;服务器端发送数据缓慢时,发送队列为零表示服务器应用程序是性能瓶颈;如果客户端接收队列为零,而服务器发送队列非零,则网络本身是性能瓶颈。文章还介绍了TCP层面的特征和工具的使用方法,帮助读者快速了解网络数据传输慢的问题所在及解决方法。此外,文章提出了基于状态转移的解决方案,通过收集客户端和服务器端的关键信息,以及观察数据请求和传输流程图,来快速诊断数据传输问题。通过状态机的解决方案,读者可以清晰地了解HTTP数据传输的过程,并快速判断问题出现的位置。最后,文章强调了快速诊断问题的重要性,以及根据TCP的Send和Receive队列大小变化来快速诊断问题的方案。整体而言,本文为读者提供了一种快速诊断网络数据传输慢问题的方法,帮助他们更好地理解和解决相关技术挑战。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • LQQ
    老师说的任意指也包括零和非零吗?这一块有点懵,比如receiveQ是非0,sendQ是任意,如果是任意也就是说sendQ也可以有值,那怎么断定是数据消费太慢呢?
    2020-05-08
    1
  • Geek_8363c3
    ethtool是个好东西
    2021-11-16
  • 张翠山
    如果判断出服务端或者客户端慢了。怎么定位慢的原因呢。
    2020-05-04
  • 网络通信是互联网技术的底座,由于涉及的东西较多,出现问题也不好排查,老师把她抽象成了三部分:发送方、传输方、接收方,问题也主要在这三者之间,发生慢?传输慢?接收慢?具体是谁的问题,可以通过netstat/ss命令来观察发送队列和接收队列的情况来判断,不过即使判断出来了,也不太好解决,只能划分一下责任,有时通过方法监控的调用链就能搞清楚,不过网络是基础设施这个存在问题,处理的话需要升级到部门或公司的层面。
    2020-03-11
  • 我来也
    以前只知道通过netstat 的sendq recvq看是否发生了拥塞,先不到老师结合两边的socket状态来判断是哪方的原因。学习了! netstat经常使用,倒是ss用的不太多。
    2020-02-06
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部