问题背景
用户反馈文件下载慢,一开始下载很快,但突然速度下降。问题描述相当简单,估计是该用户具有一定的基础,在问题环境下客户端和服务器均有抓包,且保存较完整,直接扔包出来求教专家。
结合该问题下各专家的分析,感觉此案例还是比较有意思,继续分享。
案例取自 Wireshark 官方问答论坛问题分析
上来还是老套路,看看客户端上抓包文件中的 TCP 三次握手 。

如描述一样,此文件确实是在客户端 87.185.166.148 上抓包,RTT 0.008536s ,MSS 均为 1460,且两端均支持 Window scale 及 SACK 等。


看看用户所说的一开始下载很快,但突然速度下降的现象,确实,如下图

快速浏览下 专家信息,发现异常的干净,并没有丢包引起的重传、乱序之类的问题,所以下载慢的问题会是什么呢。

从客户端抓包文件中查看 Window Scaling,来自服务器方向的 Bytes out 偏低,离 Rcv Win 还很遥远,疑似服务器的发送方向能力不足。

细看客户端抓包文件中的 Bytes Out 图不是很明显,因为也有可能是 ACK 数据过快。

再次在服务器抓包文件中检查 Bytes Out,问题较明显。在接收端窗口容量很大的情况下,服务器发送数据的能力逐步下降,匹配下载速度慢的现象。

可观察到问题点的数据包,服务器每发送 6 个MSS 大小的数据包,最后一个设置 PSH 位,然后停止发送,等待客户端的 ACK,然后再次发送 6个MSS。。。循环


问题总结
问题原因在于服务器无法正常,也就是无法够快的发送数据,造成数据传输速率下降,可能与服务器的拥塞窗口或是发送缓冲区限制有关。 🤣
















