Огромные потери пакетов и ошибки контрольной суммы
Наш сервер 2008 начал работать очень медленно в течение 2 недель. Наши веб-сайты (iis 7.5) загружаются очень медленно, а иногда и зависают. Мы начали тестирование с wireshark и увидели, что наши пакеты теряются во время передачи. Клиент требует одни и те же пакеты несколько раз, пожалуйста, проверьте ниже.
(КЛИЕНТ): 11 3.492500 Клиент-сервер TCP 54 61220> http [ACK] Seq = 316 Ack = 5521 Win = 66240 Len = 0(СЕРВЕР): 12 3.495204 Сервер-клиент TCP 1434 [TCP Предыдущий сегмент потерян] [Сегмент TCP повторно собранного PDU]
(КЛИЕНТ):13 3.495225 Клиентский сервер TCP 66 [TCP Dup ACK 11 # 1] 61220> http [ACK] Seq = 316 Ack = 5521 Win = 66240 Len = 0 SLE = 6901 SRE = 8281
**** (СЕРВЕР):***14 3.604038 Сервер-клиент TCP 1434 [сегмент TCP пересобранного PDU]
** (КЛИЕНТ):***15 3.604062 Клиент-сервер TCP 66 [TCP Dup ACK 11 # 2] 61220> http [ACK] Seq = 316 Ack = 5521 Win = 66240 Len = 0 SLE = 6901 SRE = 9661
** (СЕРВЕР):***16 3.606074 Сервер-клиент TCP 1434 [TCP Предыдущий сегмент потерян] [Сегмент TCP повторно собранного PDU]...
** (КЛИЕНТ):***23 3.714810 Клиентский сервер TCP 74 [TCP Dup 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] [Сегмент TCP повторно собранного PDU]
Мы подробно проверили кадры и увидели, что большинство ошибок - это "ошибки разгрузки контрольной суммы IP". Когда мы отключаем "Разгрузку контрольной суммы" от нашего сетевого адаптера, мы начинаем получать много "подозреваемой передачи", и сервер все еще работает медленно. Интересно, что в одном из наших IP-адресов на нашем сервере мы не получаем эту ошибку, и веб-сайты, использующие этот IP, достаточно быстрые.
У вас есть идеи, что происходит?
1 ответ
Многие проблемы производительности TCP сводятся к очень простым проблемам с постоянной потерей пакетов; даже небольшие потери (0,5%) могут вызвать значительные проблемы для TCP.
Пожалуйста, скачайте winmtr
и установите его на свой сервер Windows 2008; Это бесплатная утилита, которая будет отслеживать потерю пакетов за переход. Запустите это по назначению (ям), где у вас есть проблемы с пропускной способностью. Ваша цель - установить базовую согласованную потерю пакетов в течение не менее 10 или 15 минут; иногда я позволяю этому работать часами, чтобы поймать прерывистую потерю пакета в прыжке. Когда вы видите прыжок, где начинается потеря пакетов и продолжается на всех переходах после этого, это место, где можно начать искать проблемы.
Пример:
В этой трассировке потеря пакета начинается с первого прыжка в сети (10.27.136.1), поэтому возможной причиной является связь на сетевой карте / маршрутизаторе компьютера окна; перегрузка при первом прыжке является еще одной возможной причиной.
Имейте в виду, что winmtr использует сообщения об ошибках ICMP от маршрутизаторов, поэтому
- Коммутаторы Ethernet не отображаются как явный переход на пути, но все же могут способствовать потере пакетов
- Некоторые сообщения об ошибках ICMP ограничивают скорость (или даже фильтруют), поэтому скачки, которые не показывают последовательную потерю пакетов после них, могут просто превышать ограничение скорости (или настроены на фильтрацию ошибок ICMP)
- Брандмауэры могут препятствовать видимости через них