Мы арендовали 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 на своей сетевой карте?