Назад | Перейти на главную страницу

Случайное отключение TCP-сокетов Windows Server: как воспроизвести?

Мы арендовали 10 серверов Windows у крупного провайдера в Европе. Все они работают как положено. Один сервер внезапно вышел из строя, и служба поддержки обнаружила, что оба диска сломаны. Заменили диски и память (провели тест и обнаружили неисправный DIMM).

После этого сервер был переустановлен с нуля с Windows 2008 server R2.

Теперь мы испытываем случайное отключение сокетов TCP в нашем программном обеспечении (это серверное программное обеспечение, которое обрабатывает ~ 200 TCP-соединений в реальном времени). Мы провели много тестов, но не можем воспроизвести проблему, которая носит случайный характер.

Иногда также обрываются соединения VNC, SSH, RDP, поэтому это не связано с нашим программным обеспечением.

Я снова переустановил Windows 2008 и первым делом загрузил Firefox ... загрузка остановилась из-за отключения.

Это определенно проблема с оборудованием.

Все остальные серверы работают с таким же SO на том же оборудовании. У нас никогда не было проблем.

Как воспроизвести эту проблему, чтобы показать поставщику, что есть проблема с оборудованием? Есть ли какой-нибудь специальный набор тестов на базе Windows для сетевых проблем?

Я открыт для предложений.

Обновление 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. Драйвер - rt64win7.sys от Realtek, версия 7.065.1025.2012. Он поставляется с предустановленным сервером для каждого покупателя. Он корректно работает с теми же драйверами на других серверах.

Обновление 3

Я установил последнюю версию Wireshark. я бегу wget -m --limit-rate 1000 somesite для генерации некоторых запросов с TCP-трафиком.

В захвате Wireshark есть много предупреждений. Окно полно, 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 диагностика чтобы проверить наличие проблем с оборудованием.
И: настройка регистрация счетчика производительности на интерфейсе - конкретно посмотрите на следующие счетчики:

Сетевой интерфейс \ Ошибки исходящих пакетов
Сетевой интерфейс \ Ошибки приема пакетов
TCPv4 \ Сбои подключения
TCPv4 \ Сброс подключений

Это должно помочь записать проблему, которую вы наблюдаете, и может быть предоставлено вашему хосту, чтобы показать проблемы, которые у вас есть. Также - настройте такое же ведение журнала счетчика производительности на некоторых исправных серверах для сравнения.

Вы можете использовать программное обеспечение для захвата пакетов, такое как WireShark, чтобы посмотреть, что происходит.

Это могло быть что-то еще, но это похоже на проблему с контрольной суммой TCP. Эта функция часто выгружается на аппаратную карту, и вы даже не сможете увидеть проблему в Wireshark с того же компьютера (хотя обычно это очевидно, когда вы видите ее из дампа брандмауэра).

Если контрольная сумма в пакете TCP неверна, это вызовет повторный запрос пакета. Если по прошествии некоторого времени одна из подключенных сторон не может создать правильно проверенное окно, она сочтет соединение разорванным и отправит пакет RSET.

Итак, вы пробовали отключить разгрузку TCP на своей сетевой карте?