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

28.12.15

База данных - 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.

нагрузочное тестирование документооборот

См. также

HighLoad оптимизация Программист Платформа 1С v8.3 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    2726    ivanov660    25    

50

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    6371    ivanov660    12    

56

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    10995    Evg-Lylyk    61    

45

HighLoad оптимизация Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    5805    spyke    28    

51

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    8647    vasilev2015    20    

43

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

2 стартмани

15.02.2024    14111    277    ZAOSTG    87    

118