Использование ThreadMaster для борьбы с мошенническими приложениями

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

Администраторы служб терминалов сталкиваются со многими проблемами, не более чем с поддержкой приложений, которые пытаются монополизировать ресурсы ЦП на данном сервере. ThreadMaster предоставляет простой и бесплатный метод управления мошенническим приложением.


Введение


Многие приложения, развертываемые с помощью служб терминалов, просто не были написаны для многопользовательской среды. Хотя администраторы терминального сервера могут столкнуться с множеством различных проблем, приручение приложения, интенсивно использующего ЦП, может быть одной из наиболее интересных задач. Приручите его слишком сильно, и производительность приложения может стать слишком медленной. Дайте ему слишком много свободы, и это может повлиять на производительность всех пользователей на конкретном сервере. Для решения этой проблемы доступно несколько сторонних инструментов и утилит; но ThreadMaster может сделать это, не увеличивая цену вашего развертывания служб терминалов. В этой статье демонстрируется использование ThreadMaster и преимущества, которые эта бесплатная утилита может принести вашей среде.


Установка ThreadMaster


ThreadMaster можно бесплатно загрузить с http://threadmaster.tripod.com. Один zip-файл развернется, чтобы показать файлы, показанные на рисунке 1:



фигура 1


Чтобы установить ThreadMaster, просто запустите файл «Install.cmd». Это создаст 2 каталога; %windir%system32ThreadMaster и %windir%system32ThreadMasterlog. Файлы будут скопированы в каталог «%windir%system32ThreadMaster», а значения реестра будут созданы в HKLMSYSTEMCurrentControlSetServicesThreadMasterParameters. Это важно понимать, так как для этого продукта нет графического интерфейса управления; вся настройка выполняется с помощью вашего любимого инструмента редактирования реестра. Будет создана служба с именем «ThreadMaster», для которой установлен автоматический запуск, и она будет запущена автоматически. Эта служба немедленно вызывает ThreadMaster с настройками по умолчанию. Имейте в виду, что установка по умолчанию приведет к тому, что все процессы будут ограничены 15% загрузки ЦП, за исключением определенных процессов, которые вы найдете в подразделе HKLMSYSTEMCurrentControlSetServicesThreadMasterParametersExceptions. Это критически важные процессы Windows, и закрытие любого из них может привести к далеко не оптимальным результатам. Если вы хотите добавить другие процессы, которые должны быть исключены из ThreadMaster, просто добавьте значение реестра REG_SZ с тем же именем, что и у процесса (включая расширение, например.exe), в HKLMSYSTEMCurrentControlSetServicesThreadMasterParametersExceptions. подраздел. Затем необходимо перезапустить службу ThreadMaster, чтобы эти изменения вступили в силу. На рисунках 2 и 3 ниже показаны файлы и параметры реестра, установленные ThreadMaster.



фигура 2



Рисунок 3


В дополнение к исключениям процесса есть несколько других значений реестра, используемых для управления поведением ThreadMaster. В HKLMSYSTEMCurrentControlSetServicesThreadMasterParameters вы найдете CPUThresholdPCT со значением по умолчанию 15%. Это устанавливает максимальный процент использования ЦП, который получит любой процесс. Это значение по умолчанию для всех процессов (кроме тех, которые находятся в подразделе реестра Exceptions), но значение по умолчанию можно переопределить для определенных процессов. Чтобы установить значение, отличное от значения по умолчанию, для определенного процесса, просто добавьте значение REG_SZ с таким же именем, как у процесса, для которого вы хотите настроить другое пороговое значение ЦП, в подраздел HKLMSYSTEMCurrentControlSetServicesThreadMasterParametersApplications. и введите значение в процентах (0-100) для конкретного процесса. ThreadMaster добавляет процесс «mfadmin.exe» (старая утилита администрирования Citrix MetaFrame) по умолчанию и ограничивает его загрузку ЦП до 5%.


Вернувшись к ключу Parameters, мы находим MainSampleTime, который управляет периодом выборки для применения фиксации ЦП. Значение по умолчанию, равное 30 секундам, указывает, что процесс должен превысить настроенный порог использования ЦП в течение 30 секунд, прежде чем будет применено ограничение. Это имеет смысл, чтобы приспособиться к допустимым мгновенным всплескам загрузки ЦП, однако значение по умолчанию в 30 секунд может оказаться немного большим. Рассмотрите возможность изменения этого значения на 15-20 секунд, но, как всегда, сначала проверьте эти настройки на нерабочем сервере. Существуют два других параметра реестра, обеспечивающие возможность выполнения действия при включении фиксации ЦП и отдельного действия при отключении фиксации. Например, сценарий может быть выполнен для создания записи в журнале событий или отправки электронного письма, указывающего, что ThreadMaster начал действовать, и/или чтобы указать, что перегрузка ЦП прекратилась. Просто помните, что служба ThreadMaster должна быть перезапущена после внесения любых изменений в настройки реестра ThreadMaster, чтобы эти изменения вступили в силу.


ThreadMaster в действии


Давайте посмотрим на ThreadMaster в действии на терминальном сервере Windows 2003. Процесс с именем CPUHog.exe будет использоваться для демонстрации эффекта процесса с интенсивным использованием ЦП, разрешенного для запуска в беспорядке; а потом запустим сервис ThreadMaster и пронаблюдаем положительный эффект от этой бесплатной утилиты. На рисунке 4 ниже мы видим график, показывающий загрузку процессора для сервера с очень низкой активностью.



Рисунок 4


Рисунок 5 рисует другую картину; чрезмерная загрузка ЦП теперь затронула каждого пользователя на этом конкретном сервере.



Рисунок 5


Быстрая проверка процессов на рис. 6 показывает виновника; CPUHog.exe.


Изображение 28635
Рисунок 6


Затем запускается служба ThreadMaster, и через 30 секунд мы видим, что наш график использования ЦП на рис. 7 возвращается к гораздо более здоровому состоянию.



Рисунок 7


На рис. 8 также показано, что процесс CPUHog.exe теперь контролирует только 14 % доступного ЦП, а не более 90 %, как до вызова ThreadMaster. По умолчанию для процесса CPUHog.exe применяется максимальное пороговое значение 15 %.



Рисунок 8


Регистрация активности ThreadMaster


ThreadMaster предоставил основу для функции ведения журнала, о чем свидетельствует каталог журнала, который создается при установке. По умолчанию в этом месте ничего не регистрируется, но определенные данные отслеживаются в реестре. Подраздел реестра HKLMSYSTEMCurrentControlSetServicesThreadMasterStatisticsCount будет содержать значение для каждого процесса, который ThreadMaster зафиксировал, а также общее количество раз, когда блокировка ЦП была вызвана для этого конкретного процесса. Подраздел HKLMSYSTEMCurrentControlSetServicesThreadMasterTime будет содержать общее количество времени в секундах, в течение которого был зажат каждый отдельный процесс.


В нашем примере мы можем предположить, что ThreadMaster заблокировал процесс «CPUHog.exe» на определенное время. Чтобы увидеть доказательства этого, нам нужно снова открыть наш любимый редактор реестра. Глядя в «HKLMSYSTEMCurrentControlSetServices


Раздел реестра ThreadMasterStatistics покажет, что CPUHog.exe был зажат дважды в общей сложности на 53 секунды (в десятичном формате). Хотя это не так уж и много, но информации достаточно, чтобы помочь в обнаружении приложений, интенсивно использующих ЦП. На рисунках 9 и 10 ниже показаны эти данные:



Рисунок 9



Рисунок 10


В дополнение к значениям реестра «ThreadOverloadActionStart» и «ThreadOverloadActionStop» и данным, предоставленным в разделе реестра «Statistics», ThreadMaster предоставляет образец пакетного файла ThreadLog.cmd. Этот пакетный файл представляет собой образец файла, предназначенный для сбора статистики и ее сохранения в файле журнала, который будет находиться в каталоге ThreadMasterLog. Существует также пример пакетного файла ThreadSaveLog.cmd, который сохранит и переименует существующий файл журнала. Эти пакетные файлы не предоставляют возможности ведения журнала в состоянии по умолчанию, но содержат пример кода пакетного файла. Если вы хотите создать подробный журнал активности ThreadMaster, возможно, лучшим методом будет создание VBScript (или использование другого языка сценариев, такого как Pearl), который будет извлекать данные из местоположения реестра ThreadMaster «Статистика» и/или запрашивать информацию о процессе. через WMI. В большинстве случаев не требуется доступ к подробной информации журналов; до тех пор, пока ThreadMaster выполняет свою работу по отслеживанию ценных циклов ЦП и помогает обеспечить положительный пользовательский опыт.


Вывод


ThreadMaster не является единственным в отношении доступных на рынке утилит для решения проблем с производительностью терминального сервера. Есть много сторонних пакетов, решающих эту проблему. Даже Citrix Presentation Server включает функцию использования ЦП (по лицензии Aurema). Некоторые из этих продуктов содержат очень сложные утилиты управления с графическим интерфейсом и обеспечивают очень детальный контроль. Однако ни один из них не может сравниться по цене с ThreadMaster; в свободном доступе для общественности. Как видно из демонстрации, представленной в этой статье, возможность использования ThreadMaster в качестве эффективного средства управления использованием ЦП в средах терминальных серверов делает его очень привлекательным вариантом. Прежде чем тратить значительную сумму на приобретенный продукт, попробуйте ThreadMaster. В конце концов, пользователи вашего терминального сервера и ваш ИТ-бюджет могут быть вам благодарны.