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

10.10.25

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

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

Файлы

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

Наименование Скачано Купить файл
Замеряем производительность контура 1с
.epf 100,17Kb ver:10.10.2025
35 1 850 руб. Купить
Поиск тормозов на клиенте
.epf 2,18Mb ver:13.06.2025
12 1 850 руб. Купить

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

 

Тест

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

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

 

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

 

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

10.10.2025

У замера производительности установлен безопасный режим

 

13.06.2025

Причесан код

 

25.05.2025

Выделил отдельно Сервер1ССерверSQL- стало информативнее

 

 

18.05.2025

Выделил отдельно КлиентСервер- стало информативнее

 

 18.05.2025

Пара новых тестов

 

28.04.2025

Пара новых тестов

 

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

  • Зарплата и управление персоналом КОРП, редакция 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

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

См. также

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

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

10.11.2025    5265    ivanov660    48    

51

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

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

18.02.2025    8109    ivanov660    39    

61

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

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

24.06.2024    10536    ivanov660    13    

64

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

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

06.06.2024    16507    Evg-Lylyk    73    

46

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

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

13.03.2024    8109    spyke    29    

54

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

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

13.03.2024    11437    vasilev2015    22    

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

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

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

"stack": [
[
"ВнешняяОбработка.ОценкаПроизводительности1С.Форма.Форма.Форма",
159,
"\u0009\u0009\u0009\u0009ТаймСтамп = ДолгийЗапросНаСервере(ТекЦикл*ТекИтерация,ЗамерыВМилисекундах\/10);"
]
8. ZAOSTG 192 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 192 04.11.25 12:27 Сейчас в теме
(9) Проблема еще актуальна?
Для отправки сообщения требуется регистрация/авторизация