Нагрузочное тестирование 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 оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

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

24.06.2024    5398    ivanov660    12    

56

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

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

06.06.2024    9567    Evg-Lylyk    61    

44

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

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

13.03.2024    5231    spyke    28    

49

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

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

13.03.2024    7770    vasilev2015    20    

42

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

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

2 стартмани

15.02.2024    12677    253    ZAOSTG    83    

115

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

Принимать, хранить и анализировать показания счетчиков (метрики) в базе 1С? Почему бы нет? Но это решение быстро привело к проблемам с производительностью при попытках построить какую-то более-менее сложную аналитику. Переход на PostgresSQL только временно решил проблему, т.к. количество записей уже исчислялось десятками миллионов и что-то сложное вычислить на таких объемах за разумное время становилось все сложнее. Кое-что уже практически невозможно. А что будет с производительностью через пару лет - представить страшно. Надо что-то предпринимать! В этой статье поделюсь своим первым опытом применения СУБД Clickhouse от Яндекс. Как работает, что может, как на нее планирую (если планирую) переходить, сравнение скорости работы, оценка производительности через пару лет, пример работы из 1С. Все это приправлено текстами запросов, кодом, алгоритмами выполненных действий и преподнесено вам для ознакомления в этой статье.

1 стартмани

24.01.2024    5858    glassman    18    

41

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    14854    doom2good    49    

71