大量数据包丢失和校验和错误

大量数据包丢失和校验和错误

我们的 2008 服务器在 2 周内开始运行非常缓慢。我们的网站 (iis 7.5) 加载非常缓慢,有时会冻结。我们开始使用 wireshark 进行测试,发现我们的数据包在传输过程中丢失。客户端多次请求相同的数据包,请在下面检查。

(客户):11 3.492500 客户端服务器 TCP 54 61220 > http [ACK] Seq=316 Ack=5521 Win=66240 Len=0 (服务器) :12 3.495204 服务器客户端 TCP 1434 [TCP 前一个段丢失] [重组 PDU 的 TCP 段]

(客户):13 3.495225 客户端服务器 TCP 66 [TCP Dup ACK 11#1] 61220 > http [ACK] Seq=316 Ack=5521 Win=66240 Len=0 SLE=6901 SRE=8281

****(服务器):***14 3.604038 服务器客户端 TCP 1434 [重组 PDU 的 TCP 段]

**(客户端):***15 3.604062 客户端服务器 TCP 66 [TCP Dup ACK 11#2] 61220 > http [ACK] Seq=316 Ack=5521 Win=66240 Len=0 SLE=6901 SRE=9661

**(服务器):***16 3.606074 服务器客户端 TCP 1434 [TCP 前一个段丢失] [重新组装的 PDU 的 TCP 段]...

**(客户端):***23 3.714810 客户端服务器 TCP 74 [TCP Dup ACK 11#6] 61220 > http [ACK] Seq=316 Ack=5521 Win=66240 Len=0 SLE=11041 SRE=16561 SLE=6901 SRE=9661

**(服务器):***24 3.718211 服务器客户端 TCP 1434 [TCP 快速重传] [重新组装的 PDU 的 TCP 段]

我们详细检查了这些帧,发现大多数错误都是“IP 校验和卸载错误”。当我们从网络适配器禁用“校验和卸载”时,我们开始收到大量“可疑传输”,并且服务器仍然很慢。有趣的是,在我们服务器的某个 IP 中,我们没有收到此错误,并且使用该 IP 的网站速度足够快。

你知道发生什么事了吗?

答案1

许多 TCP 性能问题归结为持续数据包丢失的简单问题;即使看起来很小的丢失率(0.5%)也会给 TCP 带来严重问题。

请下载winmtr并将其安装在您的 Windows 2008 服务器上;这是一个免费的实用程序,可以跟踪每个跳点的数据包丢失情况。针对您遇到吞吐量问题的目的地运行此程序。您的目标是至少 10 或 15 分钟内持续的数据包丢失;有时我会让它运行数小时以捕获跳点处的间歇性数据包丢失。当您看到数据包丢失开始的跳点,并且之后的所有跳点都继续发生时,这就是开始寻找问题的地方。

例子:

温姆特

在此跟踪中,数据包丢失从网络中的第一跳(10.27.136.1)开始,因此 Windows 机器的以太网卡/路由器上的链接是一个可能的原因;第一跳的拥塞是另一个可能的原因。

请记住,winmtr 依赖于来自路由器的 ICMP 错误消息,因此

  • 以太网交换机不会在路径中显示为显式跳跃,但仍可能导致数据包丢失
  • 一些路由器会限制(甚至过滤)ICMP 错误消息,因此在它们之后没有显示一致数据包丢失的跳跃可能刚好达到其速率限制(或配置为过滤 ICMP 错误)
  • 防火墙可能会阻止透过它们的可见性

相关内容