Тормозит Directum на терминальной ферме

Тормозит Directum на терминальной ферме

directum logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами методы оплаты телефона билайн, я привел вам 5 примеров описывающих 5 приложений и сервисов банков. Сегодня я хочу поговорить вновь про административные вещи, а именно мы рассмотрим по каким причинам может медленно запускаться и работать Directum 5 на терминальной ферме. Думаю с данной проблемой сталкивались многие администраторы и пользователи, так как данное ПО очень популярное.

Описание проблемы

Есть Remote Desktop Services High Availability ферма построенная на базе Windows Server 2019, там установлена система документооборота и автоматизации бизнес процессов Directum 5. Пользователи массово стали жаловаться на долгое открытие и работу в системе irectum 5. Само открытие только занимало от 40 секунд, что самое интересное, на старой RDS ферме, которая была на базе Windows Server 2012 R2, все открывалось за 5 секунд. Короче работать было невозможно.

Долго открывается Directum на терминальной ферме

Как ускорить работу Directum 5

Первое к чему я вас хочу отправить, это к техническим требованиям, по которым ваша система должна подходить и соответствовать:

Требования к серверам

  • Тип дисков, очень рекомендуется SSD, тут думаю это требования для всех подойдет
  • От 12 ГБ ОЗУ на сервере приложений с компонентами (IIS)
  • Старайтесь разносить сервер приложений и SQL базу. Для сервера SQL минимум 8 ГБ ОЗУ
  • Скорость локальной сети 1 ГБ
  • ОС Windows Server 2008 R2 и выше, MSQ SQL 2008 и выше

Подробнее можно ознакомиться вот тут - https://www.directum.ru/products/directum/technical_requirements

Проверка ресурсов сервера и клиента

Второе, что вы должны проверить, это не упираетесь ли вы по ресурсам, как на сервере, так и на клиентских станциях. Если у вас есть система мониторинга, например Zabbix, то вы можете посмотреть данные там, если же ее нет, то стоит о ней задуматься, а пока откройте диспетчер задач, сделать это можно через нажатие CTRL+SHIFT+ESC. Тут в режиме реального времени посмотрите нагрузку на CPU и память, если показания высокие, то есть смысл в увеличении ресурсов. Например, у меня данный терминальный сервер находится на виртуальной машине, которая работает на базе гипервизора ESXI 6.5, который в свою очередь лежит на физическом сервере Dell Power Edge R740.

Если в системе явно присутствую зависания, медленное отрывание окон, то откройте "Мониторинг ресурсов"

Мониторинг ресурсов Directum в Windows

Посмотрите на вкладке "Диск", какие процессы у вас к нему обращаются, тут нужно выделить два момента, которые будут вам говорить, о проблемах со скоростью дисковой подсистемы:

  1. Время ответа у процессов - если оно очень высокое, более 100 для HDD и более 20 для SSD, то ваш диск вероятнее всего загружен, что вызывает медленную работу приложений и Directum.
  2. Второй момент это длина очереди, которая не должна превышать 1, если более, то плохо.

Просмотр очередей к диску при медленной работе Directum

Проверка опции DFSS

Ранее я вам рассказывал про функционал Dynamic Fair Share Scheduling (DFSS), который помогал сделать честное распределение ресурсов между пользователями терминалов, но как показала практика, это может приводить и к нехорошим последствиям, когда при запуске приложения ему не хватает ресурсов, в следствии чего вы наблюдаете тормоза, зависания и медленную работу приложений.

После дискуссии с разработчиками Directum (ЕСУД) было выяснено, что лучше отключать Dynamic Fair Share Scheduling (DFSS), так как он сильно влияет на работу приложения. Напоминаю, что там двум ключам EnableCpuQuota и EnableFairShare нужно выставить значение "0".

Быстро проверить статус на ваших RDSH хостах или другом списке серверов, можно скриптом PowerShell.

function Date {Get-Date -Format "yyyy.MM.dd HH:mm:ss"}

"$(Date) Quering computers from AD"
$out_file = "C:\Temp\\IS_1112.csv"

"ComputerName;EnableCpuQuota;EnableFairShare" | Out-File $out_file -Force

$comps_file = "C:\Temp\comps.txt"
$comps = Get-Content $comps_file
"$(Date) Going to process $($comps.Length) computer records"

foreach ($comp in $comps) # | sort DNSHostName
{
if (Test-Connection $comp -Count 1 -Quiet)
{
"$(Date) $comp is online"

"$(Date) Checking for Fair Share CPU Scheduling"

$RegKey1 = $RegKey2 = $EnableCpuQuota = $EnableFairShare = $null

try {
# $EnableDFSS = (Get-WmiObject -ComputerName $comp.DNSHostName -Class win32_terminalservicesetting -Namespace "root\cimv2\TerminalServices").EnableDFSS
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $comp)

$RegKey1 = $Reg.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Quota System")
$EnableCpuQuota = $RegKey1.GetValue("EnableCpuQuota")

$RegKey2 = $Reg.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\TSFairShare\\Disk")
$EnableFairShare = $RegKey2.GetValue("EnableFairShare")
}
catch {
"$(Date) $($_.exception.message)"
}

# "$comp;$EnableCpuQuota;$EnableFairShare"
"$comp;$EnableCpuQuota;$EnableFairShare" | Out-File $out_file -Append -Force
}
else
{
"$(Date) $comp is offline"
}
}

В результате у вас будет CSV файл с таким содержимым, где видно значение нужных ключей реестра.

Проверка Dynamic Fair Share Scheduling (DFSS) скриптом

После применения данных изменений вам даже не потребуется перезагрузка системы, все изменения вступят сразу в силу, после чего я запустил DIRECTUM и о чудо он стал запускаться за 6-7 секунд вместо 40-50, эврика. В результате чего вся медленная работа превратилась в быструю.

Дополнительно

Еще накидаю возможных вариантов почему может тормозить Directum на Windows Server 2016-2019:

  • Антивирусное решение - попробуйте его отключить или добавить папку приложения в исключение
  • DEP - как его отключить смотрите по ссылке

На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *