Жонглирование ресурсами службы терминалов

Опубликовано: 25 Апреля, 2023

Один из моих первых опытов работы с компьютерами был в 1979 году. В то время мне было шесть лет, и мой дед, работавший в IBM, взял меня на день к себе в офис. Я отчетливо помню, как он устроил мне экскурсию по компании и показал основной мэйнфрейм своей компании. Я был очарован увиденным, и, как вы понимаете, у меня было много вопросов. Это было, когда мой дедушка дал мне краткий ускоренный курс по тому, что с тех пор стало известно как вычисления с тонким клиентом.


В то время вычисления на тонких клиентах имели смысл. Все сотрудники компании использовали (сравнительно) недорогие тупые терминалы с зелено-черным текстовым дисплеем. Когда каждый сотрудник работал, его ввод отправлялся на мэйнфрейм для обработки, и мэйнфрейм возвращал несколько строк текста. Я предполагаю, что, вероятно, между клиентом и мейнфреймом никогда не проходило не более сотни байтов.


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


На это есть несколько причин. Операционная система Windows и многие приложения Windows (например, Microsoft Office) имеют тенденцию быть довольно раздутыми. Это означает, что для эффективного выполнения нескольких сеансов Windows на одном сервере потребуется огромное количество вычислительной мощности и памяти. Затем возникает проблема с отправкой обновлений экрана клиентам. Графика просто требует гораздо большей пропускной способности для передачи, чем текст.


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


Аппаратное планирование


Если вы серьезно рассматриваете возможность использования служб терминалов Windows в качестве обычной клиентской операционной среды, то выбор подходящего оборудования абсолютно необходим для вашего успеха. Это особенно верно для вашего терминального сервера. Вам действительно не нужно слишком беспокоиться о планировании оборудования для ваших клиентов. Пока клиентские компьютеры могут запускать клиент службы терминалов и иметь достойную сетевую карту, они будут в порядке. На самом деле, одно из самых успешных развертываний службы терминалов, которое я когда-либо видел, касалось клиентов, которые даже не использовали ПК. Клиенты использовали малобюджетные компьютеры с операционной системой Windows CE (обычно используемой для КПК). Однако, поскольку клиентский компонент службы терминалов доступен для Windows CE, эти машины могли запускать терминальные сеансы без проблем.


Прежде чем я зайду слишком далеко в обсуждении процесса планирования аппаратного обеспечения, я хочу прояснить одну вещь. Рекомендации, которые я вам даю, отличаются от рекомендаций, которые вы получите от Microsoft. Microsoft известна тем, что занижает требования к оборудованию для своих продуктов. Если вы мне не верите, просто взгляните на заявленные требования к оборудованию для таких продуктов, как Windows Server 2003 или Exchange Server 2003. Конечно, минимальные требования к оборудованию достаточны для установки программного обеспечения, но программное обеспечение не будет эффективно работать на минимальном оборудовании. Моя цель в этой статье — предоставить вам рекомендации, которые практичны для реального мира, но при этом следует соблюдать осторожность.


Вычислительная мощность


В среде службы терминалов большая часть нагрузки ложится на сам сервер, поэтому именно на нем вы должны сосредоточить свое внимание (и бюджет). Первая рекомендация, которую я бы дал для сервера, заключается в том, что он должен иметь несколько процессоров. Причина этого в том, что на терминальном сервере в основном будет работать виртуальная операционная система Windows и полный набор приложений для каждого пользователя. Сервер должен уметь это делать, а также запускать собственную операционную систему. Если вы собираетесь запускать больше, чем два или три терминальных сеанса, то однопроцессорный сервер на самом деле не подходит для этой работы.


Однако выбор подходящего сервера может быть немного сложным. Причина в том, что добавление дополнительного процессора не удваивает производительность сервера. Второй процессор даст вам только около 50% прироста производительности. Вы можете использовать четырехпроцессорный сервер, но вы должны помнить, что четырехпроцессорные серверы считаются машинами корпоративного класса и стоят намного дороже, чем двухпроцессорные серверы (20 000 долларов США по сравнению с 4 000 долларов США).


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


Системная память


Следующий ресурс, на котором вы захотите сосредоточиться, — это память. Кажется, у всех разные представления о допустимом объеме памяти для терминального сервера. Общепринятым правилом является то, что на сервере должно быть 256 МБ плюс около 25 МБ для каждого клиента, который будет подключаться через сеанс терминала. Мои личные ощущения таковы, что этой памяти недостаточно. Моя личная рекомендация: на вашем сервере должно быть не менее 512 МБ (предпочтительно 1 ГБ) плюс 64 МБ на каждую сессию.


Это поднимает интересный момент. Большинство серверов могут содержать максимум 4 ГБ оперативной памяти. Windows делит это адресное пространство памяти на 2 ГБ для использования Windows и 2 ГБ для процессов пользовательского режима (приложений). Это означает, что если вы не используете переключатель /3GB в файле BOOT.INI (не рекомендуется), у вас есть 2 ГБ для запуска пользовательских сеансов. Если выделить 64 МБ ОЗУ на каждую сессию, то сервер сможет с комфортом разместить 32 сессии.


Известно, что в реальном мире серверы с 4 ГБ ОЗУ вмещают до 75 сеансов обслуживания терминалов. Частично это объясняется тем, что некоторые сеансы потребляют больше памяти, чем другие. Если сеанс простаивает или работает с низкоуровневым приложением, таким как Блокнот, тогда этот сеанс не будет использовать около 64 МБ памяти. Это освобождает память для дополнительных сеансов.


Поскольку количество сеансов, которые может разместить сервер, зависит от того, как работают пользователи, я рекомендую планировать сервер с 4 ГБ ОЗУ, способный поддерживать 32 пользователя. Если у вас больше пользователей, начните с покупки одного сервера. Посмотрите, сколько пользователей этот сервер действительно может разместить в вашей среде, и тогда вы узнаете, сколько дополнительных серверов вам нужно купить. Другой вариант — инвестировать в 64-битный сервер. 64-разрядные серверы не налагают ограничения на объем памяти в 4 ГБ.


Жесткий диск


Еще одним важным аспектом, который следует учитывать, являются ресурсы жесткого диска вашего сервера. Если вы планируете разместить более пары терминальных сессий, вам абсолютно необходим высокопроизводительный RAID-массив.


Жесткие диски могут обрабатывать только один запрос за раз. Операционная система Windows помещает все запросы к жесткому диску в очередь, чтобы запросы можно было обслуживать по очереди. По данным Microsoft, наличие в среднем трех или более элементов в очереди на диск указывает на проблемы с производительностью. Хотя Microsoft не дает точного разъяснения, вы можете сделать вывод, что наличие одного или двух элементов в очереди на диск в любой момент времени является нормальным явлением. Итак, если для Windows нормально иметь несколько элементов в очереди на диск, что происходит с длиной очереди на диск, когда на сервере работает десять виртуальных сред Windows плюс собственная операционная система? Если у вас медленный жесткий диск, вы можете получить пятнадцать или двадцать элементов в очереди на диск.


В среде службы терминалов невозможно предотвратить переполнение дисковой очереди запросами. Единственное, что вы можете сделать, чтобы сократить длину дисковой очереди, — это обрабатывать запросы так же быстро, как они приходят. Лучший способ сделать это — оборудовать сервер высокопроизводительным RAID-массивом.


Пропускная способность сети


Еще одним важным ресурсом в среде службы терминалов является пропускная способность сети. Хорошей новостью является то, что службы терминалов Windows не так требовательны к пропускной способности, как раньше. Версия 5 протокола удаленного рабочего стола (присутствующая в Windows XP и Windows Server 2003) прекрасно справляется с задачей сохранения полосы пропускания. Заявленное использование пропускной способности для компьютеров с Windows XP, подключающихся к терминальному серверу Windows Server 2003, составляет примерно около 30 Кбит/с.


Эта статистика немного вводит в заблуждение по нескольким причинам. Во-первых, вы должны помнить, что в среде службы терминалов использование ресурсов экспоненциально. Чем больше у вас пользователей, тем большая пропускная способность вам понадобится. Даже если вам может не понадобиться большая пропускная способность для одного пользователя службы терминалов, для поддержки 20 пользователей, вероятно, потребуется довольно много пропускной способности.


Если каждый сеанс потребляет 30 Кбит/с полосы пропускания, то 20 сеансов теоретически потребляют около 600 Кбит/с полосы пропускания, что находится в пределах даже 10-мегабитного соединения Ethernet. Имейте в виду, однако, что 30 Кбит/с — это пропускная способность, используемая сеансом, если пользователь на самом деле мало что делает с сеансом. Пропускная способность, используемая сеансом, существенно увеличивается, когда пользователь запускает приложение с высокими требованиями или пытается печатать из приложения.


Поскольку службы терминалов работают, отправляя изображения экрана клиентам, легко представить себе приложение с высокими требованиями как что-то графически или математически интенсивное, например AutoCAD. Действительно, AutoCAD — это приложение с высоким спросом, которое, вероятно, истощит ресурсы служб терминалов. Тем не менее, есть некоторые другие приложения, о которых вы, вероятно, не подумали бы как о требовательных, которые могут создать огромную нагрузку на службы терминалов.


Примером такого приложения является PowerPoint. Слайды, содержащие анимацию, музыку или большое количество цветов, могут предъявлять огромные требования к службам терминалов. Internet Explorer также может стать востребованным приложением, если пользователи обращаются к веб-сайтам, содержащим видео, музыку, анимацию или заполняющим экран всплывающими окнами. Даже электронная таблица Excel может стать востребованным приложением как с точки зрения обработки, так и с точки зрения обновления экрана, если пользователь запускает сложный макрос. Запуск сложных макросов в Excel часто приводит к тому, что курсор быстро прыгает по всему экрану.


Дело в том, что, хотя подключения со скоростью 10 Мбит/с теоретически должно быть достаточно для развертывания службы терминалов, существует множество факторов, которые могут привести к тому, что для сеанса потребуется чрезмерная пропускная способность. Мой совет — инвестировать в Gigabit Ethernet. Да, гигабитное соединение может быть излишним, но дело в том, что вам никогда не придется беспокоиться о недостаточной пропускной способности терминальных сессий. Кроме того, за последний год или около того цены на гигабитное оборудование резко упали.


Вывод


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