Рейтинг:0

Ограниченная пропускная способность сети Windows с периодическим очень медленным запуском

флаг cn

У нас на работе есть подключение к Интернету со скоростью 1 Гбит/с (вверх/вниз), и я заметил, что производительность при общении с нашими серверами в облаке была ужасной. Под ужасом я подразумеваю, что из теоретических 1000 Мбит/с мы получали максимум 30 Мбит/с. После длительных диагностических сеансов мы пришли к выводу, что у нас есть проблема с производительностью сети при получении данных с наших машин Windows Server. Как ни странно, мы получаем довольно приличные скорости, когда сервер представляет собой виртуальную машину Linux (мне пришлось внести несколько изменений, чтобы увеличить окно перегрузки TCP — точные изменения перечислены ниже).

В процессе исследования я удалял все больше и больше элементов, чтобы свести проблему к самой простой форме. Мой тестовый ноутбук теперь подключен напрямую к модему, без какого-либо программного обеспечения, которое могло бы повлиять на производительность сети. То же самое для моей тестовой ВМ в облаке (3 лучших провайдера). Я использовал iperf для оценки скорости передачи. Поскольку я исключил брандмауэр из уравнения, результат сильно изменился, и мы можем получить сотни Мбит/с, но я все еще не могу понять следующее:

Виртуальная машина Linux в облаке, отправляющая данные на ноутбук: я получил среднюю скорость 640 Мбит/с за 60 секунд в последний раз, когда я тестировал (самая низкая секунда в этом тесте была 530 Мбит/с).

Виртуальная машина Windows в облаке отправляет данные на ноутбук: иногда она начинается со скорости 400 Мбит/с и даже может достигать 500 Мбит/с в течение коротких периодов времени, но примерно в 90% случаев она начинается со скорости около 60 Мбит/с в первую секунду, затем падает до 30 Мбит/с, затем медленно поднимается. Если я оставлю тест на 60 секунд, он достигнет скорости около 400 Мбит / с через 20 с лишним секунд, но скорость передачи будет намного менее стабильной, чем у Linux (также кажется, что он медленнее в целом, но это трудно оценить сейчас). ).

Дополнительная информация

  • Ноутбук (клиент в передаче данных) — ПК с Windows
  • Когда ноутбук действует как сервер (выгружающий), скорость хорошая независимо от конфигурации (назначением может быть Linux, Windows, установленный корпоративный брандмауэр также ничего не меняет)
  • Я экспериментировал с настройками виртуальной машины Windows (адаптер и TCP) всеми мыслимыми способами, но это никак не повлияло на проблему. Единственная выгода от подключения ноутбука напрямую к модему на работе (тогда я бы увеличил скорость примерно с 10 Мбит / с до 30-400 Мбит / с в зависимости от типа теста).
  • Я использовал iperf3 для выполнения всех тестов (некоторые результаты показаны ниже).
  • При создании виртуальной машины Windows Server я использовал ОС по умолчанию, предлагаемую облачным провайдером, поэтому здесь нет экзотической конфигурации.
  • Пинг между нашим офисом и нашими серверами составляет около 28 мс.
  • Пока я был подключен к брандмауэру, мы провели тест с коллегой, у которого есть деловое подключение к тому же интернет-провайдеру (такая же скорость, как у нас в офисе). Пинг от моего ноутбука до виртуальной машины Windows у него дома был где-то между 2 и 3 мс. Пропускная способность (его виртуальная машина работала как сервер) составляла около 120 Мбит/с. Тот же тест с ВМ в облаке (пинг 28 мс) был 10 Мбит/с.
  • Мне пришлось установить параметр большого окна при использовании iperf из ОС Windows, чтобы разрешить максимальную пропускную способность (-w 5M), но в Linux это не было необходимо.

У меня сложилось впечатление, что существует проблема с масштабированием окна перегрузки Windows Server. Захват Wireshark показывает большое неиспользуемое окно TCP, но я не знаю, как исправить проблему или исследовать ее дальше.

Я включил некоторые тесты, которые я сделал ниже, но я могу предоставить больше, если это необходимо.

## IPERF (виртуальная машина Linux в облаке, отправляющая данные на ноутбук в офисе)
суперпользователь@testnr5linux:~$ iperf3 -c xx.xx.xx.xx -w 5M -t 60
Подключение к хосту xx.xx.xx.xx, порт 5201
[ 5] локальный порт 10.4.0.4 47268 подключен к порту xx.xx.xx.xx 5201
[ID] Интервал передачи Битрейт Retr Cwnd
[ 5] 0,00-1,00 с 76,2 МБ 640 Мбит/с 343 2,54 МБ
[ 5] 1,00-2,00 с 80,0 МБ 671 Мбит/с 53 1,88 МБ
[ 5] 2,00-3,00 с 73,8 МБ 619 Мбит/с 0 1,98 МБ
[ 5] 3,00-4,00 с 77,5 МБ 650 Мбит/с 0 2,06 МБ
[ 5] 4,00-5,00 с 80,0 МБ 671 Мбит/с 0 2,11 МБ
(еще 55 секунд в среднем 640 Мбит/с)

## Пример хорошей скорости от облачной ВМ (Windows) с последующим долгим медленным запуском
C:\Users\superuser>iperf3.exe -c xx.xx.xx.xx -w 5M
Подключение к хосту xx.xx.xx.xx, порт 5201
[4] локальный порт 10.3.0.4 51988 подключен к порту xx.xx.xx.xx 5201
[ID] Пропускная способность интервальной передачи
[ 4] 0,00-1,00 с 17,4 МБ 145 Мбит/с
[ 4] 1,00-2,00 с 28,9 МБ 243 Мбит/с
[ 4] 2,00-3,00 с 53,1 МБ 446 Мбит/с
[ 4] 3,00-4,00 с 54,0 МБ 453 Мбит/с
[ 4] 4,00-5,00 с 54,0 МБ 452 Мбит/с
[ 4] 5,00-6,00 с 54,9 Мбайт 461 Мбит/с
[ 4] 6.00-7.00 сек 55,5 МБ 465 Мбит/сек
[ 4] 7.00-8.00 сек 56,2 МБ 471 Мбит/сек
[ 4] 8.00-9.00 сек 58,2 МБ 490 Мбит/сек
[ 4] 9.00-10.00 сек 60,5 МБ 508 Мбит/сек
- - - - - - - - - - - - - - - - - - - - - - - - -
[ID] Пропускная способность интервальной передачи
[ 4] 0.00-10.00 сек 493 МБ 413 Мбит/сек отправитель
[ 4] 0.00-10.00 сек 490 МБ 411 Мбит/сек приемник

иперф Готово.

C:\Users\superuser>iperf3.exe -c xx.xx.xx.xx -w 5M
Подключение к хосту xx.xx.xx.xx, порт 5201
[4] локальный порт 10.3.0.4 51996 подключен к порту xx.xx.xx.xx 5201
[ID] Пропускная способность интервальной передачи
[ 4] 0,00–1,01 с 7,12 МБ 59,0 Мбит/с
[ 4] 1,01-2,01 с 3,25 МБ 27,4 Мбит/с
[ 4] 2,01-3,00 с 4,00 МБ 33,8 Мбит/с
[ 4] 3,00-4,00 с 5,00 МБ 41,9 Мбит/с
[ 4] 4,00-5,01 с 5,88 МБ 49,0 Мбит/с
[ 4] 5,01-6,00 с 6,62 МБ 56,0 Мбит/с
[ 4] 6,00-7,00 с 7,50 МБ 62,9 Мбит/с
[ 4] 7,00-8,01 с 8,62 МБ 71,8 Мбит/с
[ 4] 8,01-9,00 с 9,38 МБ 79,5 Мбит/с
[ 4] 9,00-10,01 с 10,4 МБ 86,3 Мбит/с
- - - - - - - - - - - - - - - - - - - - - - - - -
[ID] Пропускная способность интервальной передачи
[ 4] 0,00–10,01 с 67,8 МБ 56,8 Мбит/с отправитель
[ 4] 0,00-10,01 с 63,1 МБ 52,9 Мбит/с приемник


## Изменения, которые мне пришлось внести в /etc/sysctl.conf, чтобы увеличить CWND.

# разрешить тестирование с буферами до 64 МБ 
net.core.rmem_max = 67108864 
net.core.wmem_max = 67108864 
# увеличьте лимит буфера TCP автонастройки Linux до 32 МБ
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432

Примечание. Похоже, мне нужно как минимум 10 репутации, чтобы публиковать изображения, но вот ссылки. https://i.stack.imgur.com/IXhnS.png https://i.stack.imgur.com/UyPYL.png

Mr R avatar
флаг cn
Когда вы получаете низкую производительность - Linux также работает тогда (если он потребляет всего 50 Мбит / с, у вас есть много BW, чтобы попробовать Linux одновременно ... если он также не работает хорошо, возможно, это сеть не окна)...
Nick102 avatar
флаг cn
Тесты всегда были изолированными (1 iperf на тот момент). Кроме того, поскольку я напрямую подключен к модему, я знаю, что другие сотрудники абсолютно не используют полосу пропускания.
Zac67 avatar
флаг ru
У вас есть LFN. Всегда ли активна опция масштабирования окна TCP? Если «Windows Server» относится к какой-либо более старой версии, которая не предоставляется.
Nick102 avatar
флаг cn
Пробовал с разными ОС в облаке. В основном я использую Windows Server 2019. Пробовал с 2012, 2022 и 2019.Да, масштабирование окна TCP всегда было активно как на клиенте, так и на сервере. Перебирая все параметры, я даже попытался перейти на «экспериментальный масштаб окна» без каких-либо изменений. Теперь масштаб окна активен и установлен в нормальное состояние на всех машинах (виртуальных машинах и ноутбуках).

Ответить или комментировать

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