- PVSM.RU - https://www.pvsm.ru -
Продолжаем выжимать все соки из Windows-сервера. В этот раз я расскажу про настройку сервера удаленных рабочих столов, более известного как терминальный сервер. В качестве «вишенки на торте» остановимся еще на тюнинге системы дедупликации томов Windows.
В инфраструктуре удаленных рабочих столов основной ролью является узел сеансов Remote Desktop Session Host (далее – RDSH). Начну с подбора аппаратной части для этой роли.
С процессором и памятью все довольно просто: больше памяти, больше процессоров высокой частоты и с большим кэшем – лучше. Чуть больше внимания стоит уделить дисковой подсистеме, ведь именно она часто является узким местом. Основную нагрузку на диски можно условно разделить на три группы:
системные файлы и приложения;
файл подкачки;
В целях увеличения быстродействия имеет смысл разнести эти группы по разным физическим дискам. Про файл подкачки уже упоминалось в предыдущей статье [1], а вот пользовательские профили потребуют некоторых манипуляций с реестром.
Для смены места хранения профилей нужно изменить следующий параметр реестра:
путь: HKLMSoftwareMicrosoftWindows NTCurrentVersionProfileList;
параметр: REG_EXPAND_SZ с именем ProfilesDirectory;
Тогда профили всех пользователей будут создаваться уже в другом месте.
Отдельно нужно отметить перемещаемые профили пользователей терминального сервера. Настроить их можно групповой политикой Конфигурация Windows – Административные шаблоны – Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов – Профили – Задать путь для перемещаемого профиля пользователя служб удаленных рабочих столов. В этой политике можно задать место для хранения профилей пользователей терминального сервера, но храниться будет лишь часть профиля. В частности AppDataLocal останется на старом месте.
Помимо изменения места хранения профилей бывает полезно перенаправить ряд пользовательских папок в другое место. Как правило, это практикуется для быстродействия и настройки бэкапов – ведь «мои документы» и «рабочий стол» могут содержать важную информацию, но и не требуют повышенного быстродействия. Перенаправление удобно настраивается с помощью групповой политики.
Сама групповая политика настраивается в Конфигурация пользователя – Конфигурация Windows – Перенаправление папки, и для большинства папок пользовательского профиля можно указать альтернативное расположение.
Настройка политики перенаправления папок
Чтобы не было проблем с созданием папок и доступом в них, я обычно делаю следующие разрешения на ресурс с перенаправленными папками:
группа «Все» может создавать папки и читать. Разрешения применяются только для корневой папки;
создатель-владелец (owner) имеет полный доступ, но только к подпапкам и файлам;
Разрешения на сетевой ресурс с перенаправленными папками пользователей.
Одна из основных нагрузок на диск на сервере с ролью RDSH – синхронная запись. Причиной опять же являются пользователи: ведь при штатной работе идет регулярное обращение к профилю, а также загрузка-выгрузка пользовательских веток реестра (%userprofile%ntuser.dat). Помимо создания разного рода производительных массивов [2] оптимизировать производительность поможет кэш на запись.
Если у вас нет батарейки для RAID-контроллера, стоит подумать о ее приобретении или же безгранично верить бесперебойникам. Надо сказать, что кэш можно настраивать и через Windows – на вкладке «Политика» в свойствах диска в оснастке «Управление дисками».
Настройка кэша жесткого диска Windows.
Вторым потенциально узким местом является сетевая подсистема. В целях оптимизации не лишним будет по возможности разделить сеть на условный frontend и backend. Через frontend пустить пользовательские подключения, а через backend – подключения к другим серверам, в том числе и к хранилищам для перенаправленных папок и перемещаемых профилей.
Загрузка сети пользовательскими подключениями, как правило, минимальна, а для повышения производительности backend можно использовать объединение адаптеров (LACP) или установить в сервер десятигигабитные адаптеры.
В настройке самой операционной системы можно выделить следующие моменты:
по возможности стоит отключить фоновые процессы: такие как проверка орфографии, автосохранения, индексирование для поиска. Или хотя бы уменьшить их частоту;
также лучше уменьшить частоту проверок статуса приложений, обновлений и прочих синхронизаций;
меньше ненужных процессов и модулей – больше простора всему остальному. Проверить процессы и загружаемые модули можно с помощью встроенной утилиты msinfo32.exe и незабвенной Autoruns [3];
антивирус на терминальном сервере – не самая лучшая идея, достаточно ограничиться защитой периметра, SRP и регулярными обновлениями. Если же Пети и Не-Пети тревожат паранойю, то стоит хотя бы исключить из проверки часть временных папок: например, с файлами, которые создают системные сервисы и доверенные приложения;
если перенаправленные устройства, такие как воспроизведение звука, микрофон и прочие диски не используются – лучше их отключить.
отдельного упоминания заслуживают перенаправленные принтеры. По возможности лучше не использовать перенаправление принтеров, подключать уже с локального принтсервера [4]. Если подключить не удается – используйте проброс принтеров с помощью штатного средства EasyPrint, без установки драйвера принтера. Ставить драйвер принтера стоит при крайней необходимости, и аккуратно – многие драйвера, особенно для старых принтеров, тянут с собой свои приложения, которые запросто могут и «уронить» службу печати;
129 – именно столько назначенных заданий в свежеустановленной Windows 2016 + Office 2016.
Нельзя не упомянуть возможность терминального сервера под названием RemoteFX, настройка его поведения также влияет на быстродействие.
RemoteFX – это целый набор технологий, отвечающих за сжатие RDP, проброс устройств, работу с видеокартой и устройствами USB как в виртуальной машине, так и на терминальном сервере.
Полезной настройкой является сжатие RemoteFX. Искать ее можно в групповых политиках по адресу Конфигурация компьютера – Административные шаблоны – Компоненты Windows – Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов – Среда удаленных сеансов – Настройка сжатия RemoteFX.
Настройка сжатия RemoteFX через групповые политики.
Настройка имеет следующие варианты:
оптимизация использования памяти. Нагрузка на сервер небольшая, но повышаются требования к пропускной способности сети;
оптимизация использования полосы пропускания сети. Сеть загружена слабо, но расход памяти составляет около 2 МБ на сессию;
баланс памяти и полосы пропускания сети. Расход памяти составляет около 200 КБ на сессию;
При небольшом количестве пользователей изнутри локальной сети настройка мало влияет на быстродействие. Но когда пользователей много или если они удаленные, стоит задуматься о ее применении.
Рядом с этой настройкой находятся и другие опции, влияющие на быстродействие – тут и настройка кодировки, и настройка максимального разрешения экрана. Особенно интересной является настройка использования графического адаптера для отрисовки изображения – для всех сеансов службы удаленных рабочих столов используйте аппаратный графический адаптер по умолчанию. Начиная с Windows 2016, RemoteFX научился работать не только с виртуальными видеокартами в виртуальных машинах, но и с видеокартой напрямую. Да, теперь видеокарту для ускорения работы можно устанавливать [5] даже в обычный сервер сеансов удаленных рабочих столов.
Другие настройки отображения можно производить на клиентской стороне, в файлах .rdp. Большинство опций находится на вкладке «Взаимодействие».
Настройки отображения, влияющие на быстродействие.
Можно настроить вручную, можно использовать предустановки в зависимости от ориентировочной скорости соединения или же отдать управление автоматике. Самое главное – не стоит отключать «Постоянное кэширование точечных рисунков». При включенной опции клиент будет держать у себя кэш изображения и загружать только изменения рисунка.
Перейду к быстродействию другой роли терминального сервера – шлюза удаленных рабочих столов.
Шлюз удаленных рабочих столов (Remote Desktop Gateway, далее – RDG) удобно использовать для подключения внешних клиентов без VPN – в частности, он позволяет настроить проверку подлинности по сертификату. С примером настройки можно ознакомиться в соответствующей статье [6], я же ограничусь вопросами быстродействия.
RDG может использовать транспорт TCP и UDP, но в большинстве случаев используется стандартный RPC поверх HTTP. Именно его и касаются следующие настройки в реестре:
Параметр | Путь | Значение по умолчанию | Комментарий |
Maxiothreads | HKLMSoftwareMicrosoftTerminal Server Gateway | Равняется количеству процессоров | Отвечает за количество выходящих потоков, которые обрабатывает RDG |
MaxPoolThreads | HKLMSystemCurrentControlSetServicesInetInfoParameter | 4 | Количество потоков, которые обрабатывает IIS |
ServerReceiveWindow | HKLMSoftwareMicrosoftRpc | 64 КБ | Максимальный размер кадра, принимаемого сервером. Может варьироваться от 8 КБ до 1 ГБ. |
ClientReceiveWindow | HKLMSoftwareMicrosoftRpc | 64 КБ | Максимальный размер кадра, принимаемого клиентом. Может варьироваться от 8 КБ до 1 ГБ. |
Понять, где есть проблемы, помогут счетчики производительности:
шлюз служб терминалов;
RPC/HTTP Proxy Per Server;
RPC/HTTP Proxy;
W3SVC_W3WP;
IPv4;
память;
сетевой интерфейс;
система;
синхронизация;
TCPv4;
процесс;
прокси RPC/HTTP
сведения о процессоре;
Скажу и пару слов про третью роль – узел виртуализации удаленных рабочих столов. Он необходим для развертывания инфраструктуры виртуальных рабочих столов (Virtual Desktop Infrastructure – VDI), чуть менее популярной, чем обычные терминальные сервера.
Помимо общих рекомендаций для гипервизоров – быстрее, выше, сильнее – в инфраструктуре VDI в режиме пула виртуальных рабочих столов имеет смысл обратить внимание на ненужные службы и возможности в клиентских операционных системах:
обновление WIndows. Все равно машина при подключении разворачивается из шаблона;
автономные файлы. VDI не уходят в оффлайн;
фоновая дефрагментация. Изменения файловой системы откатываются при отключении;
сон или гибернация. Не поддерживается в VDI;
аварийный дамп. При повторном включении машина будет развернута из шаблона;
автоконфигурация WLAN. На VDI нет Wi-Fi;
служба общих сетевых ресурсов проигрывателя Windows Media;
поставщик домашней группы;
общий доступ подключения к интернету;
служба поддержки Bluetooth;
Помимо отключения служб в шаблонной виртуальной машине, для оптимизации хранения не лишним будет включить дедупликацию в любом варианте развертывания VDI. Сделать это можно при помощи команды PowerShell:
Enable-DedupVolume <volume> -UsageType HyperV
Использование дедупликации изрядно поможет сберечь место не только при использовании виртуальных рабочих столов.
Дедупликация – это метод сжатия массива, когда повторяющиеся данные не дублируются.
Microsoft советует включать дедупликацию в следующих случаях:
файловые серверы общего назначения – общие папки пользователей, перенаправленные папки профилей и т.п.;
серверы инфраструктуры удаленных рабочих столов (VDI);
Во всех прочих случаях выгоды дедупликации стоит предварительно оценить. В этом поможет утилита DDPEval.exe, которая появится после установки роли дедупликации на сервер.
На диске с большим количеством файловых баз 1С дедупликация поможет сэкономить до 70% места.
Установка компоненты дедупликации производится через графический режим или командлетом PowerShell:
Install-WindowsFeature -Name FS-Data-Deduplication
Включить удобно командлетом Enable-DedupVolume с параметром – UsageType, который может принимать значения:
HyperV – для дисков хранения виртуальных машин и VDI;
Backup – для виртуализированных приложений резервного копирования;
Подробнее прочитать про дедупликацию и чем отличаются ее виды, предлагаю в документации Microsoft [7].
Для оптимизации баланса хранения и производительности следует уделить внимание назначенным заданиям дедупликации и тонким ее настройкам.
Механизм дедупликации использует три вида назначенных заданий:
Название | Что делает | Расписание по умолчанию |
Оптимизация | Выполняет дедупликацию | Каждый час |
Сбор мусора | Освобождает место на диске | Каждую субботу в 02:35 |
Проверка целостности | Ищет и восстанавливает повреждения | Каждую субботу в 03:35 |
Посмотреть назначенные задания можно командлетом Get-DedupSchedule.
Запланированные задания дедупликации по умолчанию.
Разумеется такое расписание может быть неприемлемо, особенно на серверах с высокой загрузкой. В таком случае удобно будет запускать задания только в часы простоя. Отключим задания командой PowerShell:
Get-DedupSchedule | ForEach-Object { Set-DedupSchedule -InputObject $_ -Enabled $false }
Добавим новое задание оптимизации в нерабочее время:
New-DedupSchedule -Name "Optimization" -Type Optimization -DurationHours 8 -Memory 100 -Cores 100 -Priority High -Days @(1,2,3,4,5) -Start (Get-Date "2017-01-01 21:00:00")
И задания сборка мусора и проверки по нерабочим дням:
New-DedupSchedule -Name "WeeklyGarbageCollection" -Type GarbageCollection -DurationHours 23 -Memory 100 -Cores 100 -Priority High -Days @(6) -Start (Get-Date "2017-01-01 07:00:00")
New-DedupSchedule -Name "WeeklyIntegrityScrubbing" -Type Scrubbing -DurationHours 23 -Memory 100 -Cores 100 -Priority High -Days @(0) -Start (Get-Date "2017-01-01 07:00:00")
Подробнее про синтаксис командлета New-DedupSchedule можно почитать в документации [8].
Большинство тонких настроек дедупликации – то есть большинство параметров для тома – настраивается с помощью командлета Set-DedupVolume.
Пример использования:
Set-DedupVolume -Volume F: -OptimizePartialFiles
Параметр | Описание | Допустимые значения | Комментарий |
ChunkRedundancyThreshold | Количество ссылок на блок до его копирования в раздел активной зоны хранилища блоков | Положительные целые числа | Обычно нет необходимости изменять значение по умолчанию, но увеличение значения может увеличить быстродействие томов с высокой дупликацией |
ExcludeFileType | Типы файлов, исключаемые из дедупликации | Массив расширений файлов | Такие файлы как мультимедиа плохо поддаются дедупликации, оптимизировать их нет смысла |
ExcludeFolder | Папки, исключаемые из дедупликации | Массив путей к папкам | Для повышения производительности можно исключить часть папок |
InputOutputScale | Уровень параллелизации операций ввода-вывода | 1 – 36 | На сервере с высокой нагрузкой можно уменьшить количество операций ввода-вывода дедупликации, что скажется на скорости выполнения оптимизации, но ускорит общую работу сервера |
MinimumFileAgeDays | Число дней после создания файла, прежде чем он будет считаться доступным для оптимизации. | Положительные целые числа, включая 0 | Значение по умолчанию – 3, в ряде случаев можно изменить значение для повышения оптимизации |
MinimumFileSize | Минимальный размер файла, чтобы он мог считаться доступным для оптимизации | Положительные целые числа (байты), большие, чем 32 КБ | Для небольших файлов дедупликация не имеет особого значения |
NoCompress | Сжатие дедуплицированных блоков | TrueFalse | Для тома, содержащего большое количество сжатых данных, вроде архивов или мультимедиа, сжатие имеет смысл отключить |
NoCompressionFileType | Файлы, которые не нужно сжимать | Массив расширений файлов | Уже сжатые файлы сжимать нет смысла |
OptimizeInUseFiles | Использование дедупликации для активных файлов | TrueFalse | В случае если на томе большинство файлов – большие и постоянно используемые, в которых меняется регулярно только часть файлов – лучше включить этот параметр. В противном случае эти файлы не будут оптимизированы |
OptimizePartialFiles | При включении этого параметра значение MinimumFileAge применяется к сегментам файла, а не ко всему файлу | TrueFalse | |
Verify | Проверка блока данных не только по хэшу, но и по байтово | TrueFalse | Включение параметра замедляет быстродействие, но обеспечивает большую гарантию сохранности данных |
Помимо настроек для тома существуют и общие настройки службы дедупликации. В частности, нас интересует два параметра, находящихся в реестре по следующему адресу:
HKLM:SystemCurrentControlSetServicesddpsvcSettings
Параметр | Описание | Допустимые значения | Комментарий |
WlmMemoryOverPercentThreshold | Возможность использовать больше памяти, чем автооценка | Положительные целые числа, в процентах. например значение 300 означает «в три раза больше» | Изменение значения параметра актуально при одновременном запуске заданий дедупликации и других ресурсоемких задач |
DeepGCInterval | Интервал между полными сборками мусора | Положительные целые числа, -1 = отключено | Полная сборка мусора оптимизирует данные тщательнее, но она более ресурсоемкая. По факту разница в свободном месте после обычной и полной сборке мусора составляет около 5%. |
Теперь, когда дедупликация настроена, можно попробовать выговорить «дедуплицировали, дедуплицировали, да не выдедуплицировали», а потом потратить бюджет не на диски, а на новые серверы в ферму удаленных рабочих столов. И начать тюнить уже их.
А вам приходилось заниматься подобным тюнингом быстродействия терминальных серверов или все «по дефолту»? Был какой-то ощутимый результат?
Автор: Tri-Edge
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/proizvoditel-nost/260647
Ссылки в тексте:
[1] статье: https://habrahabr.ru/company/pc-administrator/blog/332600/#obschie-rekomendacii-po-zhelezu
[2] производительных массивов: https://habrahabr.ru/company/pc-administrator/blog/319214/
[3] Autoruns: https://technet.microsoft.com/ru-ru/sysinternals/bb963902.aspx
[4] принтсервера: https://habrahabr.ru/company/pc-administrator/blog/332600/#server-pechati
[5] устанавливать: https://habrahabr.ru/company/pc-administrator/blog/319712/
[6] соответствующей статье: https://habrahabr.ru/post/134456/
[7] Microsoft: https://docs.microsoft.com/ru-ru/windows-server/storage/data-deduplication/understand
[8] документации: https://msdn.microsoft.com/ru-ru/library/hh848445.aspx
[9] Источник: https://habrahabr.ru/post/333476/
Нажмите здесь для печати.