Windows Server TCP套接字随机断开:如何重现?

我们从欧洲的一家大型供应商处租用了10台Windows服务器。 他们都按预期工作。 一台服务器突然崩溃,客户服务人员发现两个硬盘都坏了。 他们取代了磁盘和内存(他们运行一个testing,发现一个错误的DIMM)。

在此之后,服务器从Windows 2008服务器R2从头重新安装。

现在我们在软件中遇到随机的TCP套接字断开(这是一个处理大约200个实时TCP连接的服务器软件)。 我们做了很多testing,但是我们不能再现完全随机的问题。

有时,VNC,SSH,RDP连接也会下降,所以与我们的软件无关。

我再次重新安装Windows 2008,并作为我下载的Firefox的第一件事…下载停止由于断开连接。

这似乎肯定是一个硬件问题。

所有其他服务器在相同的硬件上运行相同。 我们从来没有问题。

如何重现此问题以显示提供程序存在硬件问题? 是否有一些特定的基于Windows的networking问题的testing套件?

我接受build议。

更新1

Wireshark捕获显示服务器突然发送RST,ACK数据包。 在RST之前有很多重传和一些数据包有这样一个数据包:

[TCP ACKed unseen segment] https > 60226 [ACK] Seq=42906 Ack=79 Win=253 Len=0 SLE=27 SRE=53 443 60226 

更新2

网卡适配器是Realtek PCIe GBE系列控制器。 驱动程序是Realtek的rt64win7.sys,版本为7.065.1025.2012。 这是为每个客户提供的预装服务器。 它与其他服务器上相同的驱动程序正常工作。

更新3

我安装了最新版本的Wireshark。 我运行wget -m --limit-rate 1000 somesite来生成一些TCPstream量的请求。

Wireshark捕获中有很多警告。 Window Full,ZeroWindow。 我用wget尝试了不同的网站,总是出现警告。 这可能是我们的问题吗?

 11 0.569100000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 554 [TCP segment of a reassembled PDU] 12 0.569356000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 554 [TCP Window Full] [TCP segment of a reassembled PDU] 13 0.569376000 xx.xxx.xxx.80 xx.xx.xxx.216 TCP 54 58572 > http [ACK] Seq=266 Ack=1828 Win=1000 Len=0 14 0.655205000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 554 [TCP segment of a reassembled PDU] 15 0.655443000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 554 [TCP Window Full] [TCP segment of a reassembled PDU] 16 0.655457000 xx.xxx.xxx.80 xx.xx.xxx.216 TCP 54 58572 > http [ACK] Seq=266 Ack=2828 Win=1000 Len=0 17 0.741237000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 554 [TCP segment of a reassembled PDU] 18 0.741498000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 554 [TCP Window Full] [TCP segment of a reassembled PDU] 19 0.741516000 xx.xxx.xxx.80 xx.xx.xxx.216 TCP 54 [TCP ZeroWindow] 58572 > http [ACK] Seq=266 Ack=3828 Win=0 Len=0 20 1.060906000 xx.xxx.xxx.80 xx.xx.xxx.216 TCP 54 [TCP Window Update] 58572 > http [ACK] Seq=266 Ack=3828 Win=1000 Len=0 21 1.146737000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 554 [TCP segment of a reassembled PDU] 22 1.146993000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 554 [TCP Window Full] [TCP segment of a reassembled PDU] 23 1.147007000 xx.xxx.xxx.80 xx.xx.xxx.216 TCP 54 [TCP ZeroWindow] 58572 > http [ACK] Seq=266 Ack=4828 Win=0 Len=0 24 1.634966000 xx.xx.xxx.216 xx.xxx.xxx.80 TCP 60 [TCP Keep-Alive] http > 58572 [ACK] Seq=4827 Ack=266 Win=15616 Len=0 25 1.634981000 xx.xxx.xxx.80 xx.xx.xxx.216 TCP 54 [TCP ZeroWindow] 58572 > http [ACK] Seq=266 Ack=4828 Win=0 Len=0 

更新4

我在Wireshark捕获中发现了一些奇怪的行为。

 44176 1183.719018000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP segment of a reassembled PDU] 44177 1183.724259000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 78 [TCP Dup ACK 44174#1] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130437 TSecr=8617727 SLE=869588 SRE=871028 44178 1183.724297000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP segment of a reassembled PDU] 44179 1183.725337000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 78 [TCP Dup ACK 44174#2] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130437 TSecr=8617727 SLE=869588 SRE=872468 44180 1183.725353000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP segment of a reassembled PDU] 44181 1183.753811000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 86 [TCP Dup ACK 44174#3] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130445 TSecr=8617727 SLE=873908 SRE=875348 SLE=869588 SRE=872468 44182 1183.753838000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP Fast Retransmission] [TCP segment of a reassembled PDU] 44183 1183.758173000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 86 [TCP Dup ACK 44174#4] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130447 TSecr=8617727 SLE=873908 SRE=876788 SLE=869588 SRE=872468 44184 1183.768334000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 86 [TCP Dup ACK 44174#5] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130449 TSecr=8617727 SLE=873908 SRE=878228 SLE=869588 SRE=872468 44185 1183.770232000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 86 [TCP Dup ACK 44174#6] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130449 TSecr=8617727 SLE=873908 SRE=879668 SLE=869588 SRE=872468 44186 1183.773544000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 86 [TCP Dup ACK 44174#7] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130450 TSecr=8617727 SLE=873908 SRE=881108 SLE=869588 SRE=872468 44187 1183.784085000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 86 [TCP Dup ACK 44174#8] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130452 TSecr=8617727 SLE=873908 SRE=882548 SLE=869588 SRE=872468 44188 1183.784097000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 101 [TCP Retransmission] [TCP segment of a reassembled PDU] 44189 1183.789043000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 86 [TCP Dup ACK 44174#9] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130453 TSecr=8617727 SLE=873908 SRE=883988 SLE=869588 SRE=872468 44190 1183.789056000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1471 [TCP Retransmission] [TCP segment of a reassembled PDU] 44191 1183.793926000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 94 [TCP Dup ACK 44174#10] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130454 TSecr=8617727 SLE=895508 SRE=896948 SLE=873908 SRE=883988 SLE=869588 SRE=872468 44192 1183.793939000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP segment of a reassembled PDU] 44193 1183.800204000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 94 [TCP Dup ACK 44174#11] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130457 TSecr=8617727 SLE=895508 SRE=898388 SLE=873908 SRE=883988 SLE=869588 SRE=872468 44194 1183.800217000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP segment of a reassembled PDU] 44195 1183.803615000 xx.x.xxx.88 xx.xxx.xxx.80 TCP 94 [TCP Dup ACK 44174#12] 57852 > http [ACK] Seq=94 Ack=868148 Win=175872 Len=0 TSval=190130457 TSecr=8617727 SLE=895508 SRE=899828 SLE=873908 SRE=883988 SLE=869588 SRE=872468 44196 1183.803640000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP Retransmission] [TCP segment of a reassembled PDU] 44197 1183.803654000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP Retransmission] [TCP segment of a reassembled PDU] 44198 1183.803660000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP Retransmission] [TCP segment of a reassembled PDU] 44199 1183.803665000 xx.xxx.xxx.80 xx.x.xxx.88 TCP 1506 [TCP Retransmission] [TCP segment of a reassembled PDU] .. a lot of these 

有1秒的错误。 我有2个连接,没有倒下。 重新传输保存了连接。

我会去显示所有这些错误的提供者。 我希望说服他们。

我要做的两件事是:使用Realtek诊断来检查硬件问题。
并且:在界面上设置性能计数器日志logging – 具体查看以下计数器:

networking接口\数据包出站错误
networking接口\数据包收到错误
TCPv4 \连接失败
TCPv4 \ Connections重置

这应该有助于logging您所看到的问题,并可以提供给您的主机以显示您遇到的问题。 另外 – 设置相同的性能计数器login一些健康的服务器进行比较。

你可以使用诸如wireshark之​​类的数据包捕获软件来查看正在发生的事情。

这可能是其他的东西,但这味道像TCP校验和的问题。 这个function经常被卸载到硬件卡上,甚至不会在同一台机器上看到Wireshark的问题(尽pipe从防火墙转储中看到它通常很明显)。

如果TCP数据包中的校验和不正确,将导致数据包被重新请求。 如果一段时间后,其中一个连接方不能build立一个适当的validation窗口,它会认为连接中断,并发送一个RSET包。

那么,你有没有尝试在你的网卡上禁用TCP卸载?