Замер производительности контура 1С и поиск узких мест

06.04.26

База данных - HighLoad оптимизация

Всегда присутствует задачи - насколько быстро работает наша система, и где "узкое место" - у пользователя "тормозит" не понятно где - надо удобно собрать его технологический журнал и найти причину

Текущие варианты замера производительности имеют свои "особенности"

  1. Популярные тесты "гилев" и fragster создают свою тестовую базу, создавая более - менее полноценную нагрузку и позволяет сравнить производительность с другими - но не дает мало информации, где конкретно узкое место.
  2. Замеры типа "нагрузочный тест" показывают, сколько пользователей "выдержит" система, но не дает сравнения с другими системами и также не показывает узкие места.
  3. Замеры типа "апдекс" показывают достаточно странные данные - потому что даже один тип документа содержит разные данные как по типу, так и по количеству строк. И говорить, что система стала быстрее или медленнее, когда у всех разные права, разное количество документов, особенно в конце года, пользователей, и постоянно меняется конфигурация, по-моему, бессмысленно...

Первые два варианта при их достоинствах - изменяют производительность специальной тестовой базы. Которая может отличаться от рабочей настройками как на sql, так и режим совместимости 1С и тп.

 

В данном варианте режим замеров - достаточно простой - долгий запрос и простые циклы. Понятно, очевидно и работает. И запускается на реальной рабочей базе и показывает именно в ней скорость работы.

В будущем возможно усложню.

 

Как пользоваться и интерпретировать результаты.

Данная обработка позволяет в целевой рабочей базе запустить замер производительности.

Покажет индекс производительности клиента, сервера 1С и скуля и обмена между ними.

При этом подойдет практически любая конфигурация на управляемых формах в максимально широком диапазоне совместимостей. Никакие БСП не используются и нет требований к объектам.

Данные БД не используются, не меняются, поэтому она безопасна для запуска и не требует особых прав.

В обработке две кнопки - Запустить и Отчет. Параметры только для отладки.

Сравнить разные сервера  - и увидеть что они одинаковые или один быстрее и в каком именно тесте и разбираться почему.

 

Тест

С одной стороны относительный - каждый элемент примерно отнормирован к 100 "баллам" и общий итог - среднее по всем тестам тоже "стремиться к 100". Новые тесты так же будут отнормированы, но на общий результат будут влиять не увеличением итого, а большей детализацией.

С другой стороны, есть колонка "Длительность мс" - где наглядно видна разница в организации циклов и затраты времени на вызовы функций клиента и сервера... 

 

 

Пример работы теста и что делать с этими результатами и моим мнением. 

Как раз на что обратить внимание при разработке своего кода для производительности

 
Как раз на что обратить внимание при разработке своего кода для производительности

 

Описание Параметр Значение ДлительностьМс
  Долгий Запрос На SQL Сервере 60 2 514
  Скорость передачи данных с сервер скуль на сервер 1С 74 4 085
  Скорость клиента итерации/цикл 88 1 134
  Скорость клиента цикл/итерации 90 1 117
Странно что большой цикл дольше двух вложенных Скорость клиента за один проход 83 1 211
Затраты на подготовку к "выполнить" Скорость клиента через выполнить 67 1 491
  Скорость создания реквизитов и элементов формы 90 11 052
  Скорость перемещения элементов формы 60 16 722
  Скорость клиента заполнения массива и ТЧ 83 12 090
  Скорость передачи данных между клиентом и сервером 102 19 453
  Скорость открытия формы 211 4 743
Вызов сервера из клиента в 50*100 раз тормозит работу! Скорость сервера итерации/цикл** 210 24 033
Вызов сервера затормаживает процесс Скорость сервера цикл/итерации 84 11 873
Все равно в 6 раз дольше чем клиент Скорость сервера за один проход 57 8 802
Неожиданно- тот же код, так же вызов сервера, но почти в 2 раза быстрее чем просто кода на сервере Скорость сервера через выполнить 96 5 241
В 100 раз быстрее чем с контекстом, но все равно в 50 раз медленнее чем просто клиент Скорость сервера без контекста итерации/цикл 115 43 654
  Скорость сервера без контекста цикл/итерации 55 9 179
  Скорость сервера без контекста за один проход 56 9 011
Неожиданно- тот же код, так же вызов сервера, но почти в 2 раза быстрее чем просто кода на сервере Скорость сервера без контекста через выполнить 93 5 397

 

 

 

Протестирована на платформе 8.3.25.1501. 8.3.27.1936 , 8.5.1.1236

 

 
История изменений 

 

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом КОРП, редакция 3.1, релизы 3.1.32.39
  • 1С:ERP Управление предприятием 2, релизы 2.5.22.67
  • 1С:Управление холдингом 3.2 (русский и английский интерфейсы), релизы 3.2.10.27
  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.176.38
  • Документооборот КОРП, релизы 2.1.36.3
  • Документооборот КОРП, редакция 3.0, релизы 3.0.17.36
  • Комплексная автоматизация, редакция 1.1, релизы 3.1.9.188
  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.392
  • Управление торговлей, редакция 11, релизы 11.5.25.85

Вступайте в нашу телеграмм-группу Инфостарт