Медленный сервер Windows 2019

Обновлено: 21.11.2024

Привет, ребята, Нед снова здесь. Клиент обратился к нам по поводу странного поведения, которое он наблюдал при копировании больших файлов в кластер Windows Server 2019 с использованием SMB 3.1.1. Примерно через каждые 5 ГБ копия временно приостанавливалась на несколько секунд, затем снова начиналась отправка до следующих 5 ГБ, а затем снова приостанавливалась и так далее, пока не было выполнено. Ошибки не было, просто загадочная пауза и возобновление повторялись снова и снова. Как обычно, в сложной системе было много подозреваемых — сеть, диски, сторонние драйверы и многое другое.

" target="_blank" >Storage Spaces Direct, кластеризация, SMB, файловая система, антивирус, драйверы фильтров и т. д. Не было никаких улучшений при использовании robocopy по сравнению с File Explorer, и диски не показывали никаких ошибок. Очень странно , если они копировали в аналогично сконфигурированное место назначения Windows Server 2012 R2, они не видели поведение! И если это была ошибка, почему множество клиентов не сообщить об этой проблеме? Этот сценарий копирования больших файлов, вероятно, происходит бессчетное количество миллионов раз в день!

Ну, команда ядра объяснила это, и я здесь, чтобы поделиться тем, что я узнал.

Несколько лет назад у них был случай, когда клиент столкнулся с тайм-аутом при копировании больших файлов из источника быстрого ввода-вывода в место назначения медленного ввода-вывода на Windows Server 2012 R2 (хмммм) через SMB. В то время, если было достигнуто пороговое значение грязной страницы в кеше, последующие записи использовали поведение сквозной записи (т. е. когда диску сообщалось, что он не может кэшировать данные, он должен их зафиксировать). Это приведет к очень большому сбросу данных на диски, а если хранилище будет медленным, это может привести к длительным задержкам и даже тайм-ауту для клиента. То, что клиент видел со своей конкретной конфигурацией оборудования.

Поэтому в Window Server 2016 команда разработчиков ядра добавила новое средство смягчения: отдельный порог грязных страниц для удаленных записей и новый встроенный сброс, принудительный при превышении порога. Если была активная запись операций ввода-вывода, это приводило к новым эффектам случайных коротких замедлений, но означало, что фактические тайм-ауты — и, следовательно, полный сбой копирования — теперь были крайне маловероятны. Этот порог удаленных грязных страниц по умолчанию составлял 5 ГБ на файл (ого, звучит знакомо?).

Они добавили параметр реестра и значение DWORD для управления всем этим на целевом сервере, поэтому я процитирую их содержание, так как пришло время математики и деталей:

Этот порог можно контролировать с помощью следующего имени параметра реестра DWORD:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerУправление памятью
RemoteFileDirtyPageThreshold

Если размер по умолчанию, равный 5 ГБ, не подходит для вашей конфигурации, рекомендуется увеличивать ограничение с шагом 256 МБ до тех пор, пока производительность не станет удовлетворительной. Обратите внимание на следующее:

  • Чтобы изменения этого параметра реестра вступили в силу, требуется перезагрузка.
  • Единицами RemoteFileDirtyPageThreshold являются количество страниц (с размером страницы, управляемым Cache Manager). Это означает, что нужно задать желаемый размер в байтах, разделенных на 4096.
  • Рекомендуемые значения: 128 МБ

До следующего раза

Нед «грязные деньги» Пайл

© Майкрософт. Эта статья была первоначально опубликована серверным хранилищем Microsoft в блоге Microsoft. Оригинал статьи можно найти здесь.

Статьи по теме

Пока мы работали над разработкой Windows Server 2016, у нас была команда, занимавшаяся тестированием многих аспектов производительности Windows. Мы сильно полагаемся…

Присоединяйтесь к Элдену Кристенсену (Elden Christensen), главному менеджеру по управлению проектами группы High Availability & Storage, чтобы узнать об основных аспектах проектирования развертывания Storage Spaces Direct в Windows Server…

Узнайте об этом новом веб-инструменте управления графическим интерфейсом, который размещен в Azure и доступен бесплатно. Особенно полезно при управлении безголовыми серверами, такими как Nano Server…

[Немецкий] Читатель блога из Германии недавно указал на проблему с Windows 10 и Windows Server 2019, связанную с низкой производительностью сети (низкой пропускной способностью) в связи с гостями Hyper-V (но также и на клиентах Windows 10 без виртуализации без виртуализации). . Причина — изменение Microsoft в стеке TCP, что вызывает проблемы. Я готовлю это в статье, потому что есть простое решение в виде скриптов PowerShell.

Читатель блога Flying Sorcerer несколько дней писал мне по электронной почте, чтобы решить эту проблему (спасибо за это).

Поскольку больше нигде не нашел, вот подсказка.
Коллега спросил меня в начале недели о проблемах с сервером 2019 и гипер-гостями в сети.

После более продолжительных поисков я наткнулся на две темы.
Microsoft натворила дерьма в Server 2019 и Windows 10 с 1709 года…

Затем читатель блога прислал мне различные ссылки с местами в Интернете, которые касаются низкой пропускной способности сети гостевых компьютеров Hyper-V на упомянутых платформах операционных систем.

Эта проблема существует с гостевыми системами Hyper-V

Если гостевая операционная система в рамках решения Microsoft Hyper-V для виртуализации установлена ​​на узле под управлением Windows 10 (версия 1709 или выше) или Windows Server 2019, пропускная способность сети для гостей Hyper-V будет крайне скромной. На немецком сайтеadmin.de кто-то уже поднимал этот вопрос весной 2019 года в этом посте. Вот выдержка, переведенная на английский язык:

  • При установке Windows Server 2019 hrs. в ВМ все нормально, все работает как надо.
  • Если я устанавливаю Windows Server 2016 hrs. или Server 2008R2 часов. в виртуальной машине на хосте эти виртуальные машины имеют очень медленное соединение с другими физическими хостами.

Затронутый человек протестировал некоторые вещи в лаборатории и пришел к выводу: как только Server 2019 работает как Hyper V на хосте, а в виртуальной машине гости не являются Windows Server 2019 (он тестировал его с Windows Server 2016 и Windows Server 2008 R2), сетевое подключение этой ВМ через встроенную сетевую карту Intel X722 к внешней стороне крайне медленное. Но производительность процессора тоже не увеличивается, пакетов с ошибками на аппаратном коммутаторе нет, но и пропускной способности сети нет.

Временное решение: отдельная сетевая карта PCIe

Затронутое лицо временно решило проблему, установив на хосте другую отдельную физическую сетевую карту PCIe (простую Intel i210). Он привязал эту сетевую карту к коммутатору Hyper-V и разрешил всем виртуальным машинам с их гостями работать через этот коммутатор по сети. В этом сценарии пропускная способность сети является желаемой.

Второй случай

Читатель блога отметил, что в середине января 2020 года другой пострадавший задокументировал эту проблему на Spiceworks. Было много тестов и опубликованной документации. На следующем рисунке показан протокол пропускной способности сети.


(Источник: Spicework)

Затем заинтересованному лицу пришла в голову великолепная идея отключить виртуальное масштабирование на стороне приема (vRSS) на сервере и на клиенте. Затем он деактивировал объединение сегментов приема (RSC) на Windows Server 202012. И вдруг получил ожидаемые значения пропускной способности сети между гостями Hyper-V и хостом. .

В дальнейшем он придумал, как оптимизировать пропускную способность сети в Windows Server 2019 (и Windows 10) в качестве хоста Hyper-V. Проблема связана со значительным изменением Microsoft стека TCP (ключевые слова: CongestionProvider, CUBIC, см. также этот пост Spiceworks с выходными данными PowerShell).

Решение с помощью скрипта PowerShell

После многих тестов пострадавший написал сценарий PowerShell под названием «THE HOLY NGIS VM-WS2019 NETWORK OPTIMIZATION SCRIPT V1.0» и опубликовал его на Spiceworks (упрощенную версию можно найти на немецком сайтеadmin.de).

Сценарий должен выполняться на Windows Server 2019, выступающем в качестве хоста, через Запуск от имени администратора. Он сбрасывает различные сетевые настройки, чтобы механизмы Microsoft больше не работали. Затем пропускная способность сети достигает желаемой скорости.

Создатель отмечает, что это не следует использовать в продуктивных средах. Поскольку сценарий PowerShell перезапускает сетевую карту. Поэтому необходимо перезапустить сервер, чтобы все изменения вступили в силу. Однако это то, чего лучше не делать в продуктивной среде Windows Server. Также обратите внимание на этот пост от представителя Microsoft с дополнительной информацией.

Это также влияет на компьютеры с Windows 10 без Hyper-V

В дополнении читатель блога отмечает, что эта проблема с пропускной способностью сети также затрагивает простых клиентов Windows 10, начиная с версии 1709, из-за «оптимизированного стека TCP». Он пишет об этом:

Windows Server 2016 работает с низкой производительностью? Попробуйте эти методы, чтобы повысить скорость работы сервера.

Автор: Dervish / Последнее обновление: 10 марта 2022 г.

Windows Server 2016 работает очень медленно

У нас проблемы с медленной работой сервера 2016 года. Сервер (жесткие диски 300 ГБ, ОЗУ 16 ГБ, 4 ядра) используется в терминальном режиме для использования Office (Word, Outlook Excel) и работы в Интернете. Пользователи сказали, что это очень медленно! Вы можете улучшить использование терминального сервера?

Почему Windows Server работает так медленно?

Достаточно ли вас огорчает низкая производительность Windows Server 2016? Ваш компьютер когда-нибудь зависал, например, проводник не отвечал или медленная передача файлов? Если ответ «Да», просмотрите этот список, он поможет вам узнать наиболее распространенные причины медленной работы Windows Server.

● На вашем компьютере установлено слишком много программ, что снижает производительность.
● Диск C заполняется.
● Слишком старый жесткий диск.
● Windows или используемое вами программное обеспечение устарели.

Как исправить «Низкую производительность Windows Server 2016»?

В зависимости от причин существует 5 методов, которые помогут исправить «низкую производительность Windows Server».

Способ 1. Запустить диагностику

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

Шаг 1. Найдите в поле поиска «mdsched.exe» и откройте средство диагностики памяти Windows.

Шаг 2. Нажмите «Перезагрузить сейчас и проверьте наличие проблем», и программа диагностики проверит ваш компьютер

Через некоторое время, если будут обнаружены какие-либо проблемы, исправьте их. и перезагрузите компьютер.

Способ 2. Закройте ненужные фоновые программы

Одной из наиболее распространенных причин низкой производительности Windows Server является слишком много программ, работающих в фоновом режиме. И вы можете открыть диспетчер задач, чтобы закрыть ненужные программы.

Кроме того, может быть слишком много программ, которые вам не нужно загружать при запуске компьютера. И это может замедлить работу Windows Server 2016. Вы можете отключить ненужные программы автозапуска.

<р>1. Найдите «msconfig.exe» в поле поиска и откройте «Конфигурация системы».

<р>2. На вкладке загрузки выберите программы, которые не нужны при запуске, и нажмите «Отключить», чтобы удалить их из программ запуска.

Способ 3. Расширение системного диска

Диск C является системным диском. Если ваш диск C заполнен, производительность Windows Server 2016 будет низкой. И вы можете добавить немного места, чтобы расширить диск C, чтобы решить эту проблему.

Чтобы расширить системный диск с помощью Server Disk Management или Diskpart, вам потребуется нераспределенное пространство, примыкающее к системному диску. Если его нет, вы можете использовать AOMEI Partition Assistant Server Edition.

В отличие от собственных инструментов Windows, нераспределенное пространство рядом с диском C не требуется; Вы можете напрямую выделить свободное пространство с одного диска на диск C с помощью AOMEI Partition Assistant. Вы можете загрузить демонстрационную версию сервера, чтобы увидеть подробные шаги.

Шаг 1. Щелкните правой кнопкой мыши раздел, в котором достаточно места, и выберите «Выделить свободное пространство».

Шаг 2. В этом окне укажите пространство, которое вы хотите переместить, и выберите «Переместить в «C:» и нажмите «ОК».

Шаг 3. Нажмите "Применить" и просмотрите незавершенные операции, затем нажмите "Продолжить".

Через несколько минут диск C будет расширен.

Способ 4. Перенос ОС на SSD

Если ваш Windows Server 2016 медленно работает на традиционном жестком диске, вы можете перенести систему Windows Server на SSD, который представляет собой устройство хранения данных нового поколения, которое может значительно повысить производительность компьютера.

Купите SSD, подключите его к компьютеру и следуйте инструкциям по переносу ОС на SSD с помощью AOMEI Partition Assistant.

Шаг 1. Откройте AOMEI Partition Assistant и нажмите «Все инструменты» > «Перенести ОС на SSD».

Шаг 2. Выберите нераспределенное пространство на карте SSD.

Шаг 3. Затем вы можете изменить размер раздела на SSD и нажать «Далее».

Шаг 4.Появится заметка о загрузке. Если вы столкнулись с проблемой загрузки, отключите исходный диск или поменяйте сокет подключения исходного диска, затем нажмите «Готово».

Шаг 5. В главном интерфейсе нажмите «Применить» и «Продолжить», чтобы запустить программу переноса.

После миграции "низкая производительность Windows Server 2016" может быть устранена.

Способ 5. Выравнивание SSD

Возможно, после переноса ОС на SSD вы не получите ожидаемой производительности. Это связано с тем, что SSD имеет неправильное выравнивание разделов.

На SSD первый раздел начинается после 64 пустых блоков, а на жестком диске первый раздел начинается после 63 блоков, и скорость записи/чтения будет снижена. Все, что вам нужно сделать, это выполнить выравнивание 4K SSD. Давайте посмотрим, как это сделать.

Шаг 1. Откройте AOMEI Partition Assistant и щелкните правой кнопкой мыши карту SSD, содержащую систему Windows Server 2016.

Шаг 2. Во всплывающем окне установите сектор раздела для выравнивания и нажмите «ОК».

Шаг 3. В главном интерфейсе нажмите «Применить» и «Продолжить».

Заключение

Вот как можно исправить «низкую производительность Windows Server 2016». Кроме того, фрагментация файлов также может привести к замедлению работы Windows Server. Вы можете выполнить дефрагментацию по расписанию, чтобы устранить фрагментацию и поддерживать компьютер в хорошем состоянии.

Если вы хотите неограниченное использование в рамках одной компании, для вас есть версия AOMEI Partition Assistant Unlimited Edition. А мощная функция «Создать портативную версию» доступна в AOMEI Partition Assistant Unlimited. Эта функция позволяет пользователям создавать AOMEI Partition Assistant на съемном устройстве, чтобы пользователи могли напрямую запускать его на целевых компьютерах без установки.

Несколько раз я сталкивался с ситуацией, когда файлы копировались гораздо медленнее с/на виртуальные машины на узле Hyper-V под управлением Windows Server 2019, чем на ВМ той же конфигурации на узле под управлением Windows Server 2016. В некоторых тестах , скорость чтения/записи по сети на ВМ на Windows Server 2019 почти в три раза ниже, чем на WS2016 (проверялось копирование по SMB, SSH/SCP). В этой статье я попытался описать несколько различных методов повышения производительности сети виртуальных машин Hyper-V, работающих на Windows Server 2019 (и последних сборках Windows 10 и 11).

Объединение сегментов приема (RSC) в коммутаторе Hyper-V vSwitch

Прежде всего следует отметить функцию объединения сегментов приема (RSC), которая появилась в Hyper-V в Windows Server 2019/2022 (и Windows 10 1809+). Объединение сегментов приема используется на уровне виртуального коммутатора (vSwitch). RSC позволяет снизить нагрузку на ЦП и увеличить пропускную способность сети за счет объединения нескольких сегментов TCP в более крупные. Производительность сети повышается, поскольку большие сегменты обрабатываются быстрее, чем множество мелких.

В предыдущих версиях Hyper-V (Windows Server 2016/2012R2) на уровне сетевой карты поддерживался только аппаратный режим объединения сегментов приема.

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

По умолчанию RSC включен для всех внешних виртуальных коммутаторов в Windows Server 2019.

Вы можете проверить, включен ли RSC для виртуальных коммутаторов, используя команду:

Get-VMSwitch | Выбрать-объект *RSC*

Вы можете отключить использование RSC для трафика IPv4 на клиентском сетевом адаптере с помощью следующей команды:

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

Проверьте, увеличилась ли скорость копирования на виртуальной машине Hyper-V после отключения RSC. Если скорость сети увеличилась, вы можете отключить RSC на виртуальном коммутаторе, к которому подключена виртуальная машина.

Чтобы отключить программный RSC для определенного виртуального коммутатора, выполните команду:

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

Или вы можете полностью отключить RSC на хосте Windows:

netsh int tcp set global rsc=disabled

Режим очереди виртуальных машин (VMQ) в драйвере сетевого адаптера

В некоторых случаях, если VMQ (очередь виртуальных машин) включена в драйвере сетевого адаптера физического хоста Hyper-V, это может привести к снижению производительности сети на виртуальных машинах Hyper-V. VMQ — это аппаратная функция, и если она не поддерживается вашим оборудованием, но включена в драйвере, это может привести к потере пакетов и увеличению задержки в сети. Проблема характерна для сетевых адаптеров Broadcom Gigabit и возникает во всех версиях Hyper-V (Windows Server 2012 R2/2016/2019).

VMQ предназначен для повышения производительности сети за счет прямой пересылки пакетов с физического сетевого адаптера на виртуальные машины.

Вы можете отключить VMQ в свойствах драйвера сетевого адаптера.

Или вы можете отобразить список сетевых адаптеров с поддержкой VMQ и их статус с помощью PowerShell:

Чтобы отключить VMQ для определенной сетевой карты, выполните приведенную ниже команду (сетевой адаптер будет недоступен в течение нескольких секунд):

Set-NetAdapterVmq -Name "NICName" -Enabled $False

После отключения VMQ лучше перезапустить хост и проверить производительность сети.

Оптимизация параметров TCP для Hyper-V в Windows Server 2019

Сохраните текущие настройки TCP на хосте Hyper-V и примените новые настройки, которые сделают настройки TCP в Windows Server 2019 почти такими же, как в Windows Server 2016.

Сохранить текущие настройки:

Get-NetTCPSetting -SettingName Datacenter,DatacenterCustom,InternetCustom,Internet|выберите SettingName,CongestionProvider,CwndRestart,ForceWS|Export-csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv

По умолчанию в Windows Server 2019 и Windows 10 1709+ используется реализация TCP CUBIC. Этот алгоритм оптимизирован для высокоскоростных сетей с высокой задержкой (он также используется по умолчанию в ядре Linux 2.6.19 и новее).

Применить новые настройки NetTCP для локальной сети:

Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

Set-NetTCPSetting -SettingName InternetCustom,Internet -CongestionProvider CTCP
Set-NetTCPSetting -SettingName InternetCustom,Internet -DelayedAckTimeoutMs 50
Set-NetTCPSetting -SettingName InternetCustom,Internet -ForceWS Disabled

Отключить сетевые методы оптимизации сети RSS и RSC на уровне стека TCP:

netsh int tcp show global
netsh int tcp set global RSS=Disabled
netsh int tcp set global RSC=Disabled

или на уровне сетевой карты:

Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Объединение сегментов Recv (IPv4)" -DisplayValue "Отключено" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Объединение сегментов Recv (IPv6)" -DisplayValue "Отключено" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName «Масштабирование стороны приема» -DisplayValue «Отключено» – NoRestart

Отключить vRSS для всех ВМ:

Получить виртуальную машину | Set-VMNetworkAdapter -VrssEnabled $FALSE

Отключите разгрузку больших пакетов (LSO) на сетевых адаптерах:
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue "Отключено" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv6)" -DisplayValue "Отключено" -NoRestart
Get-NetAdapter | Перезапуск NetAdapter

  • Объединение сегментов Recv (IPv4/IPv6) = отключено
  • Крупная разгрузка отправки, версия 2 (IPv4/IPv6) = отключена

Эти настройки стека TCP сделают настройки сетевого протокола Windows Server 2019 такими же, как в предыдущих версиях Windows Server.

Читайте также: