Многие системные администраторы сталкиваются с ситуацией, когда терминальный сервер на базе Windows Server 2008 R2 внезапно начинает потреблять от 50% до 100% ресурсов процессора. Проблема усугубляется тем, что высокая нагрузка происходит скачками, даже когда пользователи отсутствуют в системе. Проанализируем типичную ситуацию: сервер используется для работы в 1С (например, 1С:Управление торговлей в файловом варианте), настроены регламентные задания для выгрузки на сайт, а в журнале событий наблюдается шквал ошибок аудита и постоянный запуск скрипта usrlogon.cmd. Разберем по шагам, почему это происходит и как вернуть сервер в нормальное рабочее состояние.
Одной из главных причин описанной картины является подбор паролей (брутфорс) к открытому наружу порту RDP. Злоумышленники используют автоматизированные скрипты, которые пытаются авторизоваться под разными именами пользователей.
Рассмотрим подробнее, как это влияет на систему:
usrlogon.cmd: Этот системный скрипт запускается при инициализации терминальной сессии. При агрессивном брутфорсе он может срабатывать в фоновом режиме, вызывая дополнительные скачки нагрузки.Как решить проблему: Изменим стандартный порт 3389 на нестандартный, однако помните, что сканеры портов легко находят и открытые нестандартные порты. Настроим нормальный VPN-доступ или используем RD Gateway с сертификатами. Если RDP должен смотреть наружу, обязательно настроим программную защиту. Установим утилиты защиты от брутфорса для Windows (например, IPBan или EvlWatcher), которые автоматически анализируют журнал событий и добавляют IP-адреса атакующих в правила Брандмауэра.
В файловом варианте 1С регламентные задания выполняются не отдельным процессом сервера (как в клиент-серверной архитектуре), а в рамках одного из активных клиентских сеансов. В нашем случае задания запускались от имени Администратора.
Выясним причину, почему отключение регламентных заданий не сразу снимает нагрузку:
1Cv8.1CD сильно фрагментируется. В сочетании с медленной дисковой подсистемой процессор уходит в ожидание ввода-вывода (I/O Wait). Проведем сжатие и реиндексацию базы с помощью утилиты chdbfl.exe и Конфигуратора (Тестирование и исправление). В обсуждаемой ситуации именно реиндексация базы помогла автору снизить нагрузку до 50%.Проанализируем состояние ЖурналРегистрации рабочей базы. В старых версиях платформы 1С он может разрастаться до огромных размеров (десятки гигабайт в виде множества мелких файлов). Это приводит к жутким тормозам всей системы.
Решение: Регулярно (раз в год или полгода) переносим старые записи журнала в архив или сокращаем его через Конфигуратор. Если детальный лог не требуется для аудита, можно временно снизить уровень регистрации событий или полностью его отключить для выявления источника тормозов.
В Диспетчере задач часто можно заметить процесс svchost.exe (или svchost*32), который потребляет все свободные ресурсы. Посмотрим на возможные причины:
wuauserv): Для Windows Server 2008 R2 характерна проблема, когда агент обновлений зацикливается при поиске связей между тысячами старых патчей. Откроем вкладку Службы и проверим, что скрывается за нагруженным процессом. Временно остановим wuauserv. Если нагрузка упадет — потребуется ручная установка накопительных пакетов обновления или полное отключение службы.wmiprvse.exe): Скрипты администрирования или сам сервер могут часто опрашивать систему через Windows Management Instrumentation. При повреждении репозитория WMI возникает утечка памяти. Если папка %SystemRoot%\System32\Wbem\Repository весит подозрительно много, репозиторий необходимо сбросить и перестроить.svchost.exe должны быть 64-битными и находиться строго в C:\Windows\System32. Если вы видите svchost*32 (32-битный процесс) вне папки SysWOW64 или в каталогах пользователя/Temp — это практически стопроцентный признак вируса (бэкдора или майнера). Используем программы типа Process Explorer, чтобы посмотреть путь к файлу и его командную строку.Высокая нагрузка на процессор в Windows Server 2008 R2 — это редко проблема одного компонента. Для полной стабилизации сервера выполним следующий чек-лист: очистим журнал событий безопасности и защитим сервер от RDP-брутфорса (закроем порт, поднимем VPN, настроим Fail2Ban-аналог), выполним тестирование, исправление и реиндексацию базы 1С, очистим кэш пользователей и старый журнал регистрации 1С. Обязательно проверим процессы svchost.exe на принадлежность к системным службам и при необходимости отключим зависший поиск обновлений Windows. Комплексный подход позволит не только снизить нагрузку, но и предотвратить ее появление в будущем.