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

06.04.26

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Замеряем производительность контура 1с
.epf 101,46Kb ver:09.04.2026
44 2 500 руб. Купить
Поиск тормозов на клиенте
.epf 2,25Mb ver:03.03.2026
19 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

  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

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

См. также

HighLoad оптимизация Программист 1С 8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Использование оператора «В» для полей или данных составного типа (например, Регистратор) может приводить к неочевидным проблемам.

10.11.2025    7713    ivanov660    48    

53

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

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

18.02.2025    9758    ivanov660    39    

61

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

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

24.06.2024    12269    ivanov660    13    

64

HighLoad оптимизация Программист 1С:Предприятие 8 Бесплатно (free)

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

06.06.2024    18749    Evg-Lylyk    73    

46

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

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

13.03.2024    9168    spyke    29    

54

HighLoad оптимизация Программист 1С:Предприятие 8 Бесплатно (free)

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

13.03.2024    12685    vasilev2015    22    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Дмитрий74Чел 249 13.03.25 09:12 Сейчас в теме
Опишите пожалуйста подробнее свой инструмент. Что умеет, какие тесты что покажут? Тесты однопоточные/многопоточные (многопользовательские)? Каким Вы видите сценарий использования инструмента?
Хорошо бы указать реальный пример: сервер такой-то, показатели получили такие-то, сделали вывод такой-то.
Gilev.Vyacheslav; paulwist; +2 Ответить
6. ZAOSTG 198 22.03.25 21:02 Сейчас в теме
(1) Причесываю и инструмент и описание
11. ZAOSTG 198 09.04.26 17:18 Сейчас в теме
(1) Добавил описание и выводы
Многопоточность пока не делал- это уже будет привязка к БСП и чтото помещать в базу. Пока "обход" не искал
2. Gilev.Vyacheslav 1922 13.03.25 14:38 Сейчас в теме
ну вот мой тест то как раз показывает потенциальные места, требующие внимания
а у вас по цифрам нельзя даже сказать что скорость клиента равна скорости сервера 1с или субд, какие уж тут узкие места, вы делаете ту же ошибку что и фрагстер - даете кучу разных операций, с которыми пользователь остается один на один и не понимает как это на практике применить
Прикрепленные файлы:
_aleksandr_678861; +1 Ответить
5. ZAOSTG 198 22.03.25 21:02 Сейчас в теме
(2) Цель номер один выполнена - разбудить неравнодушных )
Как доделаю обработку - будет точнее понятны отличия
3. life-wayfarer 17.03.25 18:10 Сейчас в теме
Так ты слона не продашь) Где документация с описанием?
4. ZAOSTG 198 19.03.25 13:38 Сейчас в теме
(3) Вернул в состояние мыши. Были причины повысить цену
7. megatrend 132 23.06.25 15:47 Сейчас в теме
Добрый день! Поймал ошибку:

ВнешняяОбработка.ОценкаПроизводительности1С.Форма.Форма.Форма(485)}: Ошибка при вызове метода контекста (Выполнить)

Недостаточно памяти для получения результата запроса к базе данных

"stack": [
[
"ВнешняяОбработка.ОценкаПроизводительности1С.Форма.Форма.Форма",
159,
"\u0009\u0009\u0009\u0009ТаймСтамп = ДолгийЗапросНаСервере(ТекЦикл*ТекИтерация,ЗамерыВМилисекундах\/10);"
]
8. ZAOSTG 198 23.06.25 15:54 Сейчас в теме
(7) Это ошибка сервера 1С - надо его рестартануть
или памяти на сервере не хватает
пока не знаю что с таким делать ... и надо ли
9. Mitelekk 28.07.25 16:36 Сейчас в теме
(8) Валентин, приветствую. К сожалению, по обработке "Анализируем SQL сервер глазами 1С-ника" отключены комменты.
Я скачал её, но по приложенной инструкции не могу запустить, выдает ошибку. Можете помочь?
Мой ТГ @DMitelkov

Полный текст ошибки:
Значение не является значением объектного типа (количество)
{ВнешняяОбработка.АнализSQLСервера.Форма.Форма.Форма(487)}:Элементы.ТекущееСоединние.Заголовок="Работаем с "+?(Объект.ДемоРежим,"ИмяБазы",Объект.SQLБаза)+?(ИзмененияКонфигурации.количество()=1," ( изменена "+ИзмененияКонфигурации[0].Дата_изменения_конфигурации+")","")+" на "+?(Объект.ДемоРежим,"ИмяSQLСервера",Объект.SQLServer)+"("+Объект.ВерсияSQLСервера+")"+?(Типзнч(ИнформацияОСервере[0].Запущен)=Тип("Число"),""," который запущен "+ИнформацияОСервере[0].Запущен)+ " и работает уже "+?(ИнформацияОСервере[0].Работает="",""+ИнформацияОСервере[0].Работает__дней+" дн. и "+ИнформацияОСервере[0].Работает__часов+" час.",ИнформацияОСервере[0].Работает);
{ВнешняяОбработка.АнализSQLСервера.Форма.Форма.Форма(80)}:База1СПриИзмененииНаСервере(ТолькоТекущая,НоваяБаза);
{ВнешняяОбработка.АнализSQLСервера.Форма.Форма.Форма(73)}:База1СПриИзмененииНаКлиенте(Истина);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
10. ZAOSTG 198 04.11.25 12:27 Сейчас в теме
(9) Проблема еще актуальна?
12. ZAOSTG 198 09.04.26 17:19 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация