Сервер терминалов тормозит

График загрузки сервера

Есть у меня в хозяйстве 2 сервера терминалов Windows Server 2008 R2, на каждом из которых активно работают 25-30 человек. Занимаются обычной офисной работой: создание и редактирование документов в Microsoft Office 2010, работа с почтой в Microsoft Outlook 2010, серфинг в интернете, работа с 1С:Предприятие 8.3 и прочая офисная мелочевка. Обеспечивают их работу 2 достаточно мощных сервера с двумя Xeon на каждом борту, 32 Гб оперативной памяти, RAID SAS контроллер c дисками 10k и 15k.

Пока количество пользователей не приблизилось к 30-ти на каждом сервере, каких-то ощутимых торможений, мешающих нормальной работе, не было. Когда же подошли к этой цифре, сервера стали ощутимо тормозить, раздражая пользователей. Торможения выражались в задержках обычных операций редактирования, создания, перемещения файлов, навигации по папкам. Все вроде работает, но как-то медленно, раздражает, иногда картинка замирает на 1-2-3 секунды, потом продолжается работа.

Проводим тесты

Начал разбираться, в чем же дело. В первую очередь подумал на дисковую подсистему, которая просто перестала справляться с нагрузкой. Чтобы убедиться в этом, открыл оснастку «Производительность», добавил счетчик «Средняя длина очереди диска» (Average Disk Length Queue/sec), экземпляр «_Total» и стал следить. Мои подтверждения оказались верны. Среднее значение было в районе 2-4, что плохо. Тормоза начинают ощущаться при значениях от 1.5 и выше. Рекомендации в интернете говорят о том, что при значении выше 1 дисковая подсистема не справляется с нагрузкой и надо что-то предпринимать по увеличению производительности. В моем случае улучшать производительность это значит покупать новые, достаточно дорогостоящие серверные SSD диски, так как сейчас и так стоят дорогие и быстрые SAS диски со скоростью вращения 15к.

Мониторинг активности жесткого диска

Я решил провести еще немного тестов. Выбрал тот же счетчик, но в качестве экземпляра взял 2 логических диска по отдельности. Вот тут меня ждал сюрприз. Оказывается, нагрузка была не на все диски, а только на логический системный раздел C:, где установлена операционная система. Все пользовательские данные хранятся на диске D:, нагрузка на него была в пределах 0.2-0.5. Я же изначально предполагал обратное. Думал, что нагружен раздел с пользовательскими данными, где хранятся многогигабайтные PST файлы Outlook, которые постоянно подгружаются во время работы почтового клиента.

Стоит рассказать об уровнях рейд, которые я использовал. Теперь стало ясно, что разбивал диски я не правильно, ожидая повышенную нагрузку на разделы с пользовательскими данными. Система Windows Server 2008 R2 установлена на RAID-1, состоящий из двух дисков. Пользовательские данные лежат на RAID-5, состоящий из 4-х дисков. Чем я руководствовался, когда разбивал диски именно так, сейчас уже не помню, но это явно неправильно. Думаю, надо было сделать один общий RAID-10 илиRAID-6 раздел, разбить его на 2 логических и разместить систему отдельно от пользовательских данных. Таким образом была бы более равномерная нагрузка на все диски.

Снижаем нагрузку на жесткий диск

Главной задачей стало снижение нагрузки на системный диск. В первую очередь перенес файл подкачки с системного диска на пользовательский раздел. Помогло это не сильно, так как оперативной памяти достаточно, использование файла подкачки было минимальным. Я стал смотреть с помощью монитора ресурсов, что же нагружает больше всего дисковую подсистему. Оказалось, что браузеры, в моем случае Internet Explorer и Google Chrome, а конкретно, их кэши. Стал думать, как перенести кэш. С Хромом оказалось все просто. Для него существуют ADM файлы для управления настройками через групповые политики домена windows. Скачать их можно тут https://support.google.com/chrome/a/answer/187202?hl=ru

Chrome ADM файл

Дальше создаем новую политику, добавляем ADM шаблон, находим настройку «Указать каталог для пользовательских данных«, ставим значение «D:\${user_name}\Application Data\Chrome». После применения этой настройки профиль пользователя с диска С: будет перемещен по указанному пути. Там же в настройках укажем максимальной размер папки кэша: «Установить кэш диска в байтах» равный 50 мб, ставим значение в байтах «52428800».

Chrome GP

С Internet Explorer все оказалось сложнее. Настройку в групповой политике, позволяющей переместить папку Temporary Internet Files в другое место я найти не смог. Тут был вариант использовать перемещаемый профиль, но мне не захотелось с этим связываться ради такой задачи. Я нашел одну настройку, которая мне частично могла помочь в моем вопросе: «Empty Temporary Internet Files folder when browser is closed». Включил ее, чтобы временные файлы интернета автоматически очищались при закрытии браузера. Хотя у меня настроено в GPO перемещение папки (Folder Redirection) «AppData(Roaming)» на другой диск, не системный, часть настроек все равно не переносятся и остаются на системном диске, в том числе и папка с временными файлами интернета.

Эти настройки позволили снизить нагрузку на системный раздел. Далее было решено отказаться от серверного антивируса Касперского, необходимость в котором отпала. Ранее я настроил на терминалах Applocker для запрета запуска произвольных исполняемых файлов. Пользователи могли запускать только строго ограниченный набор программ, так что вирусы при всем желании они запустить бы не смогли. Отключение антивируса еще снизило нагрузку.

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

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

term_graf