我们的2008服务器在2周内开始非常缓慢地工作。 我们的网站(iis 7.5)的加载非常缓慢,有时甚至被冻结。 我们开始使用wireshark进行testing,发现数据包在传输过程中丢失。 客户端多次请求相同的数据包,请查看下面的内容。
(客户端): 11 3.492500客户端服务器TCP 54 61220> http [ACK] Seq = 316 Ack = 5521 Win = 66240 Len = 0 (服务器): 12 3.495204服务器客户端TCP 1434 [TCP上一个段丢失] PDU]
(客户端): 13 3.495225客户端服务器TCP 66 [TCP双重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双重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双重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校验和卸载错误”。 当我们禁用网卡的“Checksum offload”时,我们开始收到很多“疑似传输”,服务器仍然很慢。 有趣的是,在我们的服务器中的一个IP,我们没有收到这个错误,使用该IP的网站足够快。
你有什么想法是怎么回事?
许多TCP性能问题归结为非常简单的问题,包丢失一致; 即使是很小(0.5%)的丢失率也会对TCP造成严重的问题。
请下载winmtr并将其安装在Windows 2008服务器上; 这是一个免费的实用程序,将跟踪每跳丢包。 针对您遇到吞吐量问题的目的地运行此操作。 您的目标是基准一致的数据包丢失至less10或15分钟; 有时我会让它运行几个小时,以便在一跳上捕获间歇性丢包。 当你看到丢包开始的一跳,然后继续所有的跳跃,这是开始寻找问题的地方。
例:

在这个跟踪中,丢包从networking的第一跳(10.27.136.1)开始,所以窗口机器的以太网卡/路由器上的链路是一个可能的原因; 第一跳拥塞是另一个可能的原因。
请记住,winmtr依靠来自路由器的ICMP错误消息,所以