gifts2017

Нагрузочное тестирование 1С:Документооборот

Опубликовал Владимир Лушников (vlush78) в раздел Администрирование - Оптимизация БД (HighLoad)

Перед запуском 1С:Документооборот для средних и крупных внедрений крайне желательно провести нагрузочное тестирование, чтобы проверить корректность и скорость работы системы электронного документооборота в условиях максимальной нагрузки.
В данной статье пойдет речь о том, как провести нагрузочное тестирование в 1С:Документооборот без использования 1С:КИП.

Рассмотрим упрощенное нагрузочное тестирование, которое встроено в типовую конфигурацию 1С:Документооборот КОРП или ДГУ. При этом можно не приобретать дополнительно 1С:КИП (корпоративный инструментальный пакет).

Подготовка эталонной базы СЭД для нагрузочного тестирования

Для проведения нагрузочного тестирования нужно создать эталонную базу СЭД 1С Документооборот. В качестве эталонной базы может выступать прототип или копия рабочей базы.
Необходимо установить следующие флажки в настройках программы под Администратором. В настройках по делопроизводству:

  • Виды входящих документов,
  • Виды исходящих документов,
  • Виды внутренних документов,
  • Учет по организациям,
  • Вопросы деятельности,
  • Управление мероприятиями,
  • Грифы доступа,
  • Категории для документов и файлов,
  • настройку "Штрихкодирование документов" отключаем.

 настройки делопроизводства

 


В настройках по процессам и задачам:

  • Использовать процессы.

 


В настройках по правам доступа:

  • Использовать ограничение прав доступа.

 

Также нужно включить настройку "Выполнять замеры производительности" в общих настройках программы.

И можно настроить автоматический экспорт замеров производительности.

Нужно обязательно заполнить следующие справочники:

  • Виды внутренних документов – для каждого вида документа должны быть установлены настройки "Автоматически вести состав участников рабочей группы" и "Вести учет по корреспондентам" (довольно странное требование, так как в копии рабочей базы или прототипе далеко не всем видам документам нужны такие настройки).
  • Виды входящих документов – для каждого вида документа должна быть установлена настройка "Автоматически вести состав участников рабочей группы".
  • Виды исходящих документов – для каждого вида документа должна быть установлена настройка "Автоматически вести состав участников рабочей группы".
  • Организации.
  • Грифы доступа.
  • Вопросы деятельности.
  • Папки внутренних документов.
  • Папки мероприятий.
  • Корреспонденты.


Если видов документов много, то указанные настройки быстрее установить с помощью обработки "Групповое изменение реквизитов" в разделе "Настройка и администрирование".

Указываем справочник "Виды внутренних документов".

Выбираем реквизиты и значения, которые хотим изменить и нажимаем кнопку "Изменить реквизиты".

Аналогично поступаем со справочниками "Виды входящих документов" и "Виды исходящих документов".

Сценарии тестирования, входящие в типовую поставку 1С:Документооборот

Откроем конфигуратор 1С:Документооборот. И в конфигурации установим отбор по подсистемеНагрузочноеТестирование.

В общем модуле НагрузочноеТестированиеСценарииСтандартные указаны типовые сценарии.

В общем модуле НагрузочноеТестированиеСценарии содержится код пользовательских сценариев. В этом модуле основные сценарии вызывают стандартные сценарии из модуляНагрузочноеТестированиеСценарииСтандартные.

В комментариях перед каждой функцией можно посмотреть из каких шагов состоит каждый сценарий. Также полезным будет оценить среднее время на выполнение сценария.

Функция СозданиеВнутреннегоДокумента()
// Сценарий создания внутреннего документа.
// Шаги сценария:
//  1. Открытие списка внутренних документов, если он еще не открыт (пауза 5с).
//  2. Переключение режима просмотра на случайное (пауза 5с).
//  3. Если режим просмотра "По папкам", тогда переход к папке (пауза 5с).
//  4. Выполнение команды "Создать документ" в списке (пауза 5с).
//  5. Выбор шаблона создаваемого документа в форме выбора шаблона (пауза от 20с до 30с).
//  6. Выполнение команды "Создать по шаблону" в форме выбора шаблона (пауза 5с).
//  7. Заполнение реквизитов документа в форме документа (пауза от 60с до 180с).
//  8. Выполнение команды "Записать" в форме документа (пауза 5с).
//  9. Закрытие формы документа (пауза 5с).


Функция СозданиеВходящегоДокумента()
// Сценарий создания входящего документа.
// Шаги сценария:
//  1. Открытие списка входящих документов, если он еще не открыт (пауза 5с).
//  2. Выполнение команды "Создать документ" в списке (пауза 5с).
//  3. Выбор шаблона создаваемого документа в форме выбора шаблона (пауза от 20с до 30с).
//  4. Выполнение команды "Создать по шаблону" в форме выбора шаблона (пауза 5с).
//  5. Заполнение реквизитов документа в форме документа (пауза от 60с до 180с).
//  6. Выполнение команды "Записать" в форме документа (пауза 5с).
//  7. Закрытие формы документа (пауза 5с).


Функция СозданиеИсходящегоДокумента()
// Сценарий создания исходящего документа.
// Шаги сценария:
//  1. Открытие списка исходящих документов, если он еще не открыт (пауза 5с).
//  2. Выполнение команды "Создать документ" в списке (пауза 5с).
//  3. Выбор шаблона создаваемого документа в форме выбора шаблона (пауза от 20с до 30с).
//  4. Выполнение команды "Создать по шаблону" в форме выбора шаблона (пауза 5с).
//  5. Заполнение реквизитов документа в форме документа (пауза от 60с до 180с).
//  6. Выполнение команды "Записать" в форме документа (пауза 5с).

//  7. Закрытие формы документа (пауза 5с).


Функция СозданиеПроцесса()
// Сценарий создания процесса по внутреннему документу.
// Случайным образом выполняется один из сценариев:
//  - СозданиеПроцессаИсполнение
//  - СозданиеПроцессаОзнакомление
//  - СозданиеПроцессаПоручение
//  - СозданиеПроцессаПриглашение
//  - СозданиеПроцессаРассмотрение
//  - СозданиеПроцессаРегистрация
//  - СозданиеПроцессаСогласование

//  - СозданиеПроцессаУтверждение

 

Функция ВыполнениеЗадачи()
// Сценарий выполнения задачи.
// Случайным образом выполняется один из сценариев:
//  - ВыполнениеЗадачиИсполнение
//  - ВыполнениеЗадачиОзнакомление
//  - ВыполнениеЗадачиПоручение
//  - ВыполнениеЗадачиПриглашение
//  - ВыполнениеЗадачиРассмотрение
//  - ВыполнениеЗадачиРегистрация
//  - ВыполнениеЗадачиСогласование
//  - ВыполнениеЗадачиУтверждение
 
Чтобы добавлять свои сценарии или изменять стандартные сценарии нужно в модуле НагрузочноеТестированиеСценарии вызывать из модуля НагрузочноеТестированиеСценарииСтандартные функции и изменять параметры необходимых действий.

Подготовка ролей для нагрузочного тестирования СЭД

Перед началом проведения нагрузочного тестирования в 1С:Документообороте надо определиться с количеством виртуальных ролей, которые будут принимать участие в тестировании, так как разные пользователи создают разную нагрузку на систему.
Для каждой роли нужно будет создать отдельный текстовый файл с описанием действий, которые последовательно будет выполнять виртуальный пользователь.
Делаем следующие текстовые файлы:
Будем делать нагрузочный тест в течение 30 минут. Исходя из этого подберем сценарии нагрузочного тестирования для каждой роли.
 
user.txt - для роли Пользователь
 
 
man.txt - для роли Руководитель
 
delo.txt - для роли Делопроизводитель

Проведение нагрузочного тестирования СЭД

Проведем нагрузочное тестирование на 100 одновременных пользователей демо-базы 1С:Документооборот в клиент-серверном варианте. В данном тесте будут 60 обычных пользователей, 10 руководителей и 30 делопроизводителей.
Для запуска виртуального пользователя нужно сформировать bat-ник на каждую роль со строкой:
"C:\Program Files (x86)\1cv8\common\1cestart.exe" /IBConnectionString "<АдресИБ>" /N "<ИмяВходаПользователя>" /P "<ПарольПользователя>" /C "RunHLT;<ИмяФайлаССценариемРоли>.txt" /DisableStartupMessages /ClearCache

Рассмотрим некоторые параметры запуска более подробно:
 
/C "RunHLT;<ИмяФайлаССценариемРоли>.txt"
Параметр RunHLT означает, что будет проводиться нагрузочное тестирование при запуске 1С:Предприятие. После выполнения всех сценариев тестирования работа 1С:Документооборот будет завершена.
 
/DisableStartupMessages - подавляет некоторые стартовые сообщения.
/ClearCache очистка кэша клиент-серверных вызовов
 
Например, для роли Делопроизводитель строка запуска будет выглядеть следующим образом:
"C:\Program Files (x86)\1cv8\common\1cestart.exe" /IBConnectionString "Srvr=""server1c"";Ref=""doc"";" /N "frolova" /P "" /C "RunHLT;delo.txt" /DisableStartupMessages /ClearCache
 
Однако, если у нас кол-во пользователей с ролью Делопроизводитель много, то вручную запускать этот файл несколько раз не удобно. Поэтому лучше запускать в цикле с паузой.
Для роли Делопроизводитель файл delo.bat для запуска 30 сеансов будет тогда иметь следующий вид:
for /l %%i in (1,1,30) do (
"C:\Program Files (x86)\1cv8\common\1cestart.exe" /IBConnectionString "Srvr=""server1c"";Ref=""doc"";" /N "frolova" /P "" /C "RunHLT;delo.txt" /DisableStartupMessages /ClearCache
ping -n 5 localhost
)
 
Для роли Пользователь файл user.bat для 60 сеансов:
for /l %%i in (1,1,60) do (
"C:\Program Files (x86)\1cv8\common\1cestart.exe" /IBConnectionString "Srvr=""server1c"";Ref=""doc"";" /N "severyaninov" /P "" /C "RunHLT;user.txt" /DisableStartupMessages /ClearCache
ping -n 5 localhost
)
 
Для роли Руководитель файл man.bat для 10 сеансов:
for /l %%i in (1,1,10) do (
"C:\Program Files (x86)\1cv8\common\1cestart.exe" /IBConnectionString "Srvr=""server1c"";Ref=""doc"";" /N "fedorov" /P "" /C "RunHLT;man.txt" /DisableStartupMessages /ClearCache
ping -n 5 localhost
)
 
Теперь осталось рассчитать объем оперативной памяти из расчета 50 Мегабайт на сеанс на тех машинах, где будем запускать bat-ники.
Для запуска bat-файлов потребуется следующий минимальный объем ОЗУ:
  • delo.bat: 30 * 50 MB = 1 500 MB,
  • user.bat: 60 * 50 MB = 3 000 MB,
  • man.bat: 10 * 50 MB= 500 MB,
  • ИТОГО: 5 000 MB.
Одновременно запускаем все bat-файлы на тех машинах, где достаточно ресурсов.
Смотрим, чтобы кол-во активных пользователей превысило 100.
 
Ждем-с 30 минут...

Однако ждать пришлось значительно больше :(, т.к. железо, на котором проводилось тестирование не очень оптимальное и использовалось СУБД MS SQL Server Express без настроенных регламентов.
Некоторые сеансы так и не завершили тестирования, так как в них выскакивали разного рода ошибки и предупреждения, как например, следующие:

Анализ результатов нагрузочного тестирования СЭД

Открываем "Оценку производительности" в разделе "Настройка и администрирование".
Указываем период и список ключевых операций и нажимаем кнопку "Обновить показатели производительности". В результате по каждой ключевой операции будет выведено значение показателя APPDEX.
Полученные оценки можно интерпретировать следующим образом:
Каждую оценку можно расшифровать двойным кликом и тогда мы увидим сколько по времени выполнялась каждая конкретная операция.

Также полезными для анализа будут отчеты по статистике активности пользователей и по числу событий.

 
Оригинал статьи опубликован в блоге Владимира Лушникова на странице http://www.doc-lvv.ru/2015/12/nagruzochnoe-testirovanie-1s-dokumentooborot.html.

См. также

Автор запретил комментарии