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

directum logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете. В прошлый раз мы с вами методы оплаты телефона билайн, я привел вам 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.

Скачать готовый скрипт проверки DFSS на списке серверов

Если скрипт не запустился, то отключите защиту запуска неподписанных скриптов 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) скриптом

Или можно вот так:

$Servers = Get-Content "C:\temp\servers.txt"
foreach ($Server in $Servers) {
$EnabledFss = gwmi win32_terminalservicesetting -ComputerName $Server -Namespace "root\cimv2\terminalservices" | Select-Object enabledfss
$Table = New-Object -TypeName PSObject
$Table | Add-Member -MemberType NoteProperty -Name "Server" -Value $Server
$Table | Add-Member -MemberType NoteProperty -Name "EnabledFss" -Value $EnabledFss.enabledfss
$Table | Format-Table -AutoSize
}

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

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

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

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

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

Оцените статью
Настройка серверов windows и linux
Добавить комментарий