我的网络传输速度为什么突然下降了

我的网络传输速度为什么突然下降了

前言

这个问题是我星球成员做星球里面的必做实验时碰到的一个问题

最后的分析用到了我们的抓包大法+ping一ping真牛逼的证明方案,所以特意放出来供大家测试一下自己的分析能力,同时也检验大家对知识的掌握和运用。

这个问题很好,在EC2上稳定重现,假如你们的业务碰到了这个问题你怎么解决?

或者换个场景描述:你有一个SQL单独执行很快,2个SQL并行一起查速度就降到了原来的10%,是DB还是谁的锅?

推特上大佬们的讨论,看看别人都是怎么思考和推理的:https://treeverse.app/view/RDzsOXjO

问题描述

一个降速问题,在AWS的 t2.micro机器上几乎100%复现,操作:

  1. 开三台aws t2.micro机器,一台做server两台做client, 已知正常情况rtt是0.5ms,bandwidth 60mbps,文件大小2g
  2. client1 去curl get server 文件
  3. 一段时间等client1网速稳定后,client2 去curl get server 文件
  4. 可以观察到两个client都降速到3.5mbps,这种情况就是算把server跑坏了。
  5. 关掉client2, 观察到client1恢复到7-8mbps,但是远低于60mbps的带宽上限,也就是速度被限制到了标称的10%
  6. server搞坏之后,client重新下载就会出现一开始还行,但过10s就会掉到7-8mbps的情况,需要重启server才能恢复到60mbps

星球不能发多图,和pcap文件,重现的详细抓包、截图等都放在google driver上了: https://drive.google.com/drive/folders/13rsOQ-6VZhXu0JRMLlUypRposRRcRN-a建议大家去下载client2.pcap抓包看看

抓包发现大量dup ack, 且bytes in flight很大,server send buffer很大。

img

==强烈建议你先别往下看,去下载上面链接中的抓包文件分析看看,然后和下面的分析对比一下==


分析

有网络大牛陈硕老师 在EC2上重现了这个问题 以及他的分析,速度由300Mbps下降到了60Mbps:

img

以及 左耳朵耗子 老师也做了实验以及分析:https://twitter.com/haoel/status/1654655067365179393

我的分析:https://articles.zsxq.com/id_iq5a872u8sux.html

image-20230506132001274

证明

证明原理如这个图

image-20230506131422140

image-20230506131709216

总结

99%的人不会弄脏双手去实验,哪怕是只需要下载一个抓包就能分析出来都不会去下载。但是为什么刚好是两位陈老师会去测试重现一下呢(原谅你没有AWS机器,但是不接受你不去google driver下载抓包文件 :) ),大概率他们的时间、经验、知识都比你要丰富一些,但是他们不忌惮弄脏手而你只想做个过客看看就懂,但最后你真的啥都没看懂!