Вводная
При выборе оборудования или конфигурировании виртуального сервера возникают задачи проведения нагрузочного теста. Цель такого теста — искусственное эмулирование работы пользователей для оценки состояния оборудования и СУБД под нагрузкой. Количество пользователей и действия, которые они выполняют подбирают исходя из наиболее вероятного сценария работы системы.
Хотим поделиться ситуацией, когда к нам обратился клиент с просьбой помочь с запуском нагрузочного теста. Клиент использовал демо-версию 1С:ERP с встроенной подсистемой «Тест центр» из состава КИП (v8.1c.ru/tekhnologii/tekhnologii-krupnykh-vnedreniy/korporativnyy-instrumentalnyy-paket/), однако не смог быстро воспользоваться — оказалось, что есть подводные камни.
Далее описываем наиболее вероятные проблемы и методы решения при попытке воспользоваться «Тест центром». Надеемся, что статья поможет легче и быстрее применить данную подсистему.
Вероятные проблемы при запуске теста с помощью подсистемы «Тест центр»
1. Не стартует тест
Вернее, стартует, …
…, но почти сразу завершается.
Вроде бы очевидно и есть в документации (its.1c.eu/db/kip#content:24:hdoc:issogl1_3.3.6_агенты_тест-центра), но из нашей практики нередко ошибка именно в этом.
Решение
Необходимо стартовать «Режим Агента».
На каждой машине и под каждым пользователем ОС, из под которого планируется запуск виртуальных пользователей (виртуальных рабочих мест — сокращенно ВРМ), необходимо стартовать «Режим Агента».
Например, если Вам необходимо на некоторой терминальной машине из под одного пользователя ОС — «TC1» наблюдать за ходом теста, а из под двух других пользователей ОС — «TC2» и «TC3» выполнять сам тест, то режим агента необходимо стартовать именно под «TC2» и «TC3», а на «TC1» стартовать не нужно.
Процитируем ИТС:
Поскольку виртуальные пользователи могут быть запущены на различных компьютерах, Тест-центр (точнее, управляющее подключение Тест-центра) взаимодействует с виртуальными пользователями не напрямую, а при помощи агента Тест-центра.
Виртуальные пользователи запускаются и завершают работу автоматически агентом Тест-центра по команде управляющего подключения Тест-центра.
Один агент может управлять любым количеством виртуальных пользователей, запущенных на том же компьютере в той же сессии операционной системы (в пределах ограничений, накладываемых операционной системой).
См. подробнее здесь (its.1c.eu/db/kip#content:24:hdoc:issogl1_3.3.6_агенты_тест-центра).
2. Тест вроде бы стартует, но проходит подозрительно
При открытии ВРМ, их блокируют модальные окна и потому тест по сути не происходит так, как должен.
Решение
Находим источники блокирующих модальных окон. В нашем случае их было два:
- общая форма «Предупреждение безопасности» и;
- общая форма «Подключение интернет-поддержки пользователей».
Нехитрое временное отключение открытия форм при открытии решает проблему.
3. Тест падает. Порог ошибок
При прогоне одного из тестов столкнулись с ситуацией, когда возникает таймаут ожидания на блокировках. «Тест центр» это считает ошибкой и останавливает процесс.
Целью теста была оценка нагрузки на оборудование, поэтому требовалось провести полный тест, несмотря на наличие ожиданий.
Решение
Увеличить критическое количество ошибок теста, например до 100, а также количество ошибок итерации.
4. Увеличили число пользователей. Участились случаи блокировок
При использовании типовых преднастроенных тестов, может возникнуть потребность увеличить число пользователей. Преднастроенный тест «Полный» содержит 30 пользователей, а нам, к примеру, нужно прогнать тест на 50.
Увеличив количество пользователей, работающих с одной ролью, нужно следить за тем, чтобы не пересекались области данных, с которыми они работают.
Например, при использовании сценария «Полный» Вы решите увеличить количество пользователей для роли «Закупка (импорт)».
Рассмотрев внимательнее параметры обработки видно, что для данной обработки не следует увеличивать число пользователей, т. к. оба ВРМ будут работать с одним и тем же заказом.
Рекомендация
Для подобных ролей не увеличивать количество пользователей, а сделать это для ролей с более широкими параметрами для отбора данных к обработке.
Другой вариант: переписать логику обработки, описывающую поведение данной роли так, чтобы задать область данных более широким отбором или установив смещение: чтобы каждый следующий пользователь с данной ролью отступал, например 10 документов.
В качестве дополнения. Сбор счетчиков производительности в ОС Windows
Для сбора показателей работы ОС и СУБД MSSQL можно воспользоваться стандартным механизмом для ОС Windows «Системный монитор» (команда perfmon) или консольной утилитой logman.
1. Добавить группу сборщиков данных: интерактивно, через пуск — выполнить — perfmon — и далее добавить интерактивно.
Или через консольную утилиту logman, через пуск — Командная строка в режиме администратора — logman с параметрами.
Пример:
logman create counter 1C_counter -f bincirc -c "\Memory(_Total)\Available Mbytes" "\Memory(_Total)\Pages/sec" "\Processor(_Total)\% User Time" "\Processor(_Total)\% Privileged Time" "\Processor(_Total)\% Processor Time" "\System(_Total)\Processor Queue Length" "\Network Interface(*)\Bytes Total/sec" "\PhysicalDisk(*)\Avg. Disk Read Queue Length" "\PhysicalDisk(*)\Avg. Disk Write Queue Length" "\PhysicalDisk(*)\Avg. Disk sec/Read" "\PhysicalDisk(*)\Avg. Disk sec/Write" "\LogicalDisk(*)\Free Megabytes" -si 5 -v mmddhhmm
2. После добавления необходимо стартовать сбор.
В приложении содержится перечень рекомендуемых к отслеживанию счетчиков, как общих для серверов, так и специфических для терминального сервера, сервера 1С:Предприятия и сервера СУБД.
После завершения теста останавливают сбор счетчиков и просматривают сохраненные результаты средствами ОС Windows.
Заключение
В статье показаны вероятные препятствия, с которыми сталкивается пользователь при использовании Тест центра для оценки нагрузки на оборудование и методы обхода препятствий.
Также приведены методы сбора счетчиков производительности ОС Windows.
Анализ собранных счетчиков и дальнейшие рекомендации лежат за пределами данной статьи.
Приложение
Выступление по теме «Тест центр» на RarusTechDay2022
Описание счетчиков производительности ОС Windows для инфраструктуры 1С
Для всех серверов
\Memory(_Total)\Available Mbytes
\Memory(_Total)\Pages/sec
\Processor(_Total)\% User Time
\Processor(_Total)\% Privileged Time
\Processor(_Total)\% Processor Time
\System(_Total)\Processor Queue Length
\Network Interface(*)\Bytes Total/sec
\PhysicalDisk(здесь перечислить все диски вместо *)\Avg. Disk Read Queue Length
\PhysicalDisk(здесь перечислить все диски вместо *)\Avg. Disk Write Queue Length
\PhysicalDisk(здесь перечислить все диски вместо *)\Avg. Disk sec/Read
\PhysicalDisk(здесь перечислить все диски вместо *)\Avg. Disk sec/Write
\LogicalDisk(здесь перечислить все диски вместо *)\Free Megabytes
Дополнительные счетчики
Для сервера приложений 1C
\Process("1cv8*")\% Processor Time
\Process("1cv8*")\Private Bytes
\Process("1cv8*")\Virtual Bytes
\Process("ragent*")\% Processor Time
\Process("ragent*")\Private Bytes
\Process("ragent*")\Virtual Bytes
\Process("rphost*")\% Processor Time
\Process("rphost*")\Private Bytes
\Process("rphost*")\Virtual Bytes
\Process("rmngr*")\% Processor Time
\Process("rmngr*")\Private Bytes
\Process("rmngr*")\Virtual Bytes
Для сервера терминалов
\Process("1cv8*")\% Processor Time
\Process("1cv8*")\Private Bytes
\Process("1cv8*")\Virtual Bytes
Для сервера СУБД
\SQLServer:Buffer Manager\Buffer cache hit ratio
\SQLServer:Buffer Manager\Lazy writes/sec
\SQLServer:Buffer Manager\Page life expectancy
\SQLServer:Wait Statistics(*)\Log buffer waits
\SQLServer:Wait Statistics(*)\Log write waits
\SQLServer:Wait Statistics(*)\Lock waits
\SQLServer:Memory Manager\Total Server Memory (KB)