Desconexão aleatória de soquetes TCP do Windows Server: como reproduzir?

2

Alugamos 10 servidores Windows de um grande provedor na Europa. Todos eles funcionam como esperado. Um servidor de repente caiu e atendimento ao cliente descobriu que ambos os discos foram quebrados. Eles substituíram os discos e também a memória (eles executaram um teste e encontraram um DIMM defeituoso).

Depois disso, o servidor foi reinstalado do zero com o servidor Windows 2008 R2.

Agora estamos experimentando uma desconexão aleatória de sockets TCP em nosso software (é um software de servidor que lida com ~ 200 conexões TCP em tempo real). Fizemos muitos testes, mas não conseguimos reproduzir o problema, que é totalmente aleatório.

Às vezes, também as conexões VNC, SSH e RDP são desativadas, portanto, não estão relacionadas ao nosso software.

Eu reinstalei o Windows 2008 e, como primeira coisa que baixei o Firefox ... baixei o aplicativo devido a desconexão.

Parece definitivamente um problema de hardware.

Todos os outros servidores estão executando o mesmo SO no mesmo hardware. Nós nunca tivemos problemas.

Como posso reproduzir esse problema para mostrar ao provedor que há um problema de hardware? Existe algum conjunto específico de testes baseados em Windows para problemas de rede?

Estou aberto a sugestões.

Atualização 1

A captura do Wireshark mostra que o servidor está repentinamente enviando um pacote RST, ACK. Existem muitas retransmissões e alguns pacotes antes do RST existem tais pacotes:

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

Atualização 2

O adaptador NIC é um controlador da família Realtek PCIe GBE. O driver é rt64win7.sys da Realtek, versão 7.065.1025.2012. É o fornecido com o servidor pré-instalado para cada cliente. Funciona corretamente com os mesmos drivers em outros servidores.

Atualização 3

Instalei a versão mais recente do Wireshark. Eu corro wget -m --limit-rate 1000 somesite para gerar alguns pedidos com tráfego TCP.

Existem muitos avisos na captura do Wireshark. Janela cheia, ZeroWindow. Eu tentei sites diferentes com wget e avisos sempre aparece. Este poderia ser o nosso problema?

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

Atualização 4

Eu percebi um comportamento estranho na captura do 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

Há 1 segundo de erros. Eu tinha 2 conexões e nenhuma caiu. As retransmissões salvaram as conexões.

Eu irei ao provedor mostrando todos esses erros. Espero convencê-los.

    
por Ghigo 19.03.2014 / 15:54

3 respostas

2

Duas coisas que eu faria são: use o Diagnósticos da Realtek para verificar um problema de hardware.
E: setup log de contadores de desempenho em a interface - olhe especificamente para os seguintes contadores:

Erros de saída da interface de rede \ pacotes | Interface de rede \ pacotes erros recebidos
TCPv4 \ falhas de conexão
Restauração TCPv4 \ Connections

Isso deve ajudar a registrar o problema que você está vendo e pode ser fornecido ao seu host para mostrar os problemas que você está tendo. Além disso, configure o mesmo contador de desempenho em alguns servidores íntegros para comparação.

    
por 19.03.2014 / 16:30
1

Você pode usar o software de captura de pacotes, como o wireshark, para ver o que está acontecendo.

    
por 19.03.2014 / 16:09
0

Pode ser outra coisa, mas isso cheira a um problema com a soma de verificação TCP. Esta função é frequentemente descarregada para a placa de hardware e você não será capaz de ver o problema no Wireshark da mesma máquina (embora geralmente seja óbvio quando você a vê de um dump de firewall).

Se a soma de verificação no pacote TCP estiver incorreta, fará com que o pacote seja solicitado novamente. Se, depois de algum tempo, uma das partes conectadas não puder construir uma janela devidamente validada, ela considerará a conexão como quebrada e enviará um pacote RSET.

Então, você tentou desativar o descarregamento do TCP em sua NIC?

    
por 20.03.2014 / 11:35