首先,这是一个性能问题,经过简答你的抓包排查,发现有较多的重传(Retransmission),还有较多的乱序(Out-Of-Order)。
思路:
1.判断是乱序导致的重传,影响了性能。
2.乱序产生的原因?一般是由发送方或者网络设备导致的。
方案:
1.通讯最小化原理,尽量减少中间设备
2.LSO(Large Segment Offload,网卡直接负责分段大于MSS的数据,不需要CPU)会导致乱序。
3.在接收方和发送方同时抓包,多方分析。
经过一番排查以后,排除了LSO的问题,乱序的问题解决了,但是性能并没有好,所以重传并不是乱序引起的。
现象:
1.乱序的包很多,但是只是相邻的两个包颠倒,并没有凑满3个,所以重传并不是乱序导致的。
2.在接收方收到指定的包以后,又发了多个Dup Ack,
快速重传:当接收方收到比期望值大的Seq时,就要向发送方Ack它期望的Seq值。
3.经过最后的排除,重传的根本原因是接收方自身的乱序,但是没有证据,只是排除出来的,还有一个信息,多台电脑都是这种情况,总不能说这些电脑都是有问题的吧?最后,快要山穷水尽,得到一条关键信息,那些电脑都是同一个ghost安装的。后面换了其他ghost以后,问题得到解决。