Статистика времени выполнения кода

28.01.19

База данных - Статистика базы данных

Компонента для сбора времени выполнения кода (например проведения накладной) и отправка сначала в MS SQL далее в Zabbix.

Скачать исходный код

Наименование Файл Версия Размер
Компонента, Служба, описание
.zip 501,10Kb
3
.zip 1.0.1.0 501,10Kb 3 Скачать

Небольшая предыстория: пользователи жалуются на тормоза 1с - сделаю изменения, проверю своим скриптом время до и после, а пользователи все жалуются и жалуются... 

В итоге сделал следующий комплекс:

  • Компонента которая используется в 1с для "экранирования" замеряемых участков кода
  • SQL таблица, в которую отправляются полученные замеры всеми пользователями
  • Служба, которая получает данные из таблицы и отправляет в zabbix. (до версии 1.0.1.0 отправлялись усредненные значения)

Что делать в 1с:

Создать константу ZabbixСтатистикаВыполнения

в глобальном модуле описать

Перем глСтатистикаВыполнения Экспорт; //:Addin.ZabbixStatistics
Перем глОтправлятьСтатистикуВыполнения Экспорт;

в глобальном модуле в процедуре ПриНачалеРаботыСистемы()

глОтправлятьСтатистикуВыполнения=0;
Если Константа.ZabbixСтатистикаВыполнения=1 Тогда
	Попытка
		глСтатистикаВыполнения = СоздатьОбъект("Addin.ZabbixStatistics");
		глСтатистикаВыполнения.НазваниеБазы = ТекущаяИбКод();
		глСтатистикаВыполнения.Инициализация();
		глОтправлятьСтатистикуВыполнения=1;
	Исключение
	КонецПопытки;
КонецЕсли;

Также в глобальном модуле добавить процедуры

//-->> Статистика выполнения кода
Процедура глСтатистикаВыполнения_Начать(Параметр,ЗначениеПриОшибке=-1) Экспорт
	Если глОтправлятьСтатистикуВыполнения=1 Тогда
		глСтатистикаВыполнения.Начать(Параметр,ЗначениеПриОшибке);
	КонецЕсли;
КонецПроцедуры

Процедура глСтатистикаВыполнения_Отменить()  Экспорт
	Если глОтправлятьСтатистикуВыполнения=1 Тогда
		глСтатистикаВыполнения.Отменить();
	КонецЕсли;
КонецПроцедуры

Процедура глСтатистикаВыполнения_Закончить() Экспорт
	Если глОтправлятьСтатистикуВыполнения=1 Тогда
		глСтатистикаВыполнения.Закончить();
	КонецЕсли;
КонецПроцедуры
//<<--

Теперь в требуемом месте "экранировать" замеряемый участок

глСтатистикаВыполнения_Начать("Documents.Provedenie.RN",-1000);

//ВАШ КОД
//
//глСтатистикаВыполнения_Отменить(); Возврат; //Или иной выход из замеряемого участка кода
//
//ВАШ КОД

глСтатистикаВыполнения_Закончить();

 

Инструкция установка компоненты, службы, zabbix есть в описании на github, а также в скачиваемом архиве

 

Исходный код gihub

 

02.02.2019 Версия 1.0.1.0

  • При начале нового замера проверяется завершенность предыдущего.
  • Добавлен метод Отменить(), который требуется выполнять при выходе из замера принудительно (Прервать, возврат, и т.д.), чтобы он не считался некорректно завершенным
  • Служба теперь отправляет все значения(а не усредняет).

 

 

 

Анализ производительности производительность тормоза

См. также

Анализ состава базы данных 1С 7.7

Статистика базы данных Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Представлены 2 обработки для платформы 1С:Предприятие 7.7 релиз. 027: - Обработка "Анализ базы данных": - может пригодиться, например, для оценки переноса данных: количество элементов справочников, количество документов и субконто. Что проще внести руками, а что лучше перенести конвертацией или обработкой. - Обработка "Анализ реквизитов с типом "строка неограниченной длины"" - чтобы понять: "а нужна ли строка неограниченной длины именно здесь?". В SQL - с этим проблем нет, в вот в дбф - такие реквизиты пишутся в один файл, и если база перегружена этими реквизитами, то это может быть проблемой взаимоблокировок.

1 стартмани

03.11.2020    5505    10    andrey1508    0    

1

Статистика по пользователям в 1с7.7

Статистика базы данных Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

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

1 стартмани

15.09.2018    6011    6    almazx4    2    

2

Используемые в базе 1С:7.7 документы и справочники

Статистика базы данных Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Обработка позволяет вывести список используемых в базе документов и справочников с указанием их количества. Количество используемых документов подсчитывается за выбранный период. Обработка может быть полезна при начале работы с базой данных новому бухгалтеру при передаче дел и администратору при конвертации в базу на платформе 1с:8.2 и 1С:8.3. В документах проставляется "+" для указания используемого ключа: торговля, бухгалтерия, расчет.

1 стартмани

28.10.2016    16651    20    citicat    4    

2

Отслеживание использования объектов (отчетов, обработок, документов, справочников)

Статистика базы данных Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Благодаря данной системе вы сможете отследить, кто, сколько раз, какие объекты использует в Вашей конфигурации. Для уменьшения доработок используется стандартный журнал событий. Вы сможете понять что и как часто используется в программе, имеет ли право использование данный пользователь этот объект.

10 стартмани

12.09.2016    14364    3    Dartvader    1    

1

Статистика по документам или как отыскать время для регламентных работ?

Журнал регистрации Статистика базы данных Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Появилась задача выбрать время для регламентных работ с базой в круглосуточной организации. Да и вообще часто возникает желание быстро посчитать количество документов, создаваемых в базе за время или каким-то пользователем. Написал для этого совсем простую обработку. Работать будет почти в любом типовом приложении 1С 7.7

1 стартмани

02.08.2013    19480    24    EdGreen    7    

6

Анализ наполненности базы 7.7

Статистика базы данных Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Отчет показывающий количество объектов (справочников и документов) в базе, а также их структуру методанных. Был создан для удобности анализа сопоставления объектов при перекачке данных из баз 7.7 в 8.*

1 стартмани

13.03.2013    14270    29    vova196    2    

6

v7: Количество входов и выходов пользователей за день

Журнал регистрации Статистика базы данных Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Выясняем из-за кого появляется сообщение о необходимости переиндексации базы.

1 стартмани

16.10.2012    25066    29    jk3    5    

6

Подсчет количества записей в файлах DBF + описание

Статистика базы данных Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В 1С 7.7 DBF - есть ограничения 1. На размер файла - не более 2 Гб. И второе на количество записей в файле DBF, не более 16 млн. записей.

1 стартмани

06.06.2012    19651    55    Ivan_Sol    3    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Serg O. 225 29.01.19 00:24 Сейчас в теме
тормозит - понятие субъективное...
да, надо четкое определение - сколько сек... МиллиСек...

среднее у Вас на рисунке 106 мс = это 1/10 секунды... это для пользователя - мгновенно...
но есть пики почти до 1,2 сек... что тоже очень быстро, но все-таки это в 12 раз больше среднего...

или вы не там меряете... или проблема в "умах"...

возможно "пики" - из-за блокировок...
грузят например платёжки... блокируются реализации (регистр взаиморасчетов),
или проводятся перемещения большие - так же реализации блокируются (регистр остатки товаров на складах) - таких пиков на рисунке несколько в 11-05 максимум...

кроме того "психологически" долго - по одной из рекомендуемых 1С методике APDEX -это
время, которое превышает среднее (хорошее) в 4 раза -и это уже для клиента "долго" и "неприемлимо"...
и, возможно, тормозит не само проведение... а "возврат" в список документов
новое отображение (особенно если есть расцветка... доп.обработка или у пользователя - свои поля настроены криво через 2-3 подзапроса)

p.s.
спасибо за обработки... zabbix как раз хотел "покопать"... посмотрю на досуге
Waanneek; +1
2. пользователь 29.01.19 01:21
Сообщение было скрыто модератором.
...
3. ImHunter 315 29.01.19 10:31 Сейчас в теме
А как насчет многопоточности и/или вложенности замеров?
+
4. serpent 67 29.01.19 12:39 Сейчас в теме
А "SQL таблица, в которую отправляются полученные замеры" сама создается или надо самому делать?
+
5. LLIKIPER 9 29.01.19 14:19 Сейчас в теме
К сожалению 1с не многопоточна. Также вложенность замеров изначально не думал делать(но можно) ввиду того, что дополнительный код только увеличивает время выполнения.

В sql желательно создать отдельную базу, отдельного пользователя, в которую создать таблицу скриптом в архиве(есть и в исходниках).
Я именно так и делал, создавал отдельно базу, отдельного пользователя с доступом только в эту базу, ну и таблицу скриптом.

При первом запуске советую уровень Info изменить на Debug, тогда увидите результаты отправки в заббикс.

Небольшие ньюансы по работе компоненты:

Не отправляется статистика отмененного кода(например была ошибка транзакции). Скоро реализую в новой версии.

Отправка компонентой в sql идет в другом потоке, чтобы не тормозить код 1с, поэтому есть задержка указываемая в конфиге(изначально равна 10) с которой данные отправляются пока создан объект. Отсюда вывод, можно поймать ситуацию когда данные не успеют отправиться, а 1с будет закрыта

Можно не использовать службу, а только компоненту, просто через некоторое время выгрузить в эксель и сделать график по нужным данным, причем в этом варианте не будет усредненных вариантов и пики тормозов вы увидите сразу, просто в варианте с заббиксом это попросту не возможно, т к. отправляются данные в реальном времени.

Пишите вопросы, пожелания и замечания, буду рад ответить помочь,а также прислушаться к конструктивным замечаниям.
+
6. LLIKIPER 9 29.01.19 14:28 Сейчас в теме
По поводу вложенности, можно сделать, но не буду ввиду несовместимости с алгоритмом по отправке статистики прерванного кода.
Дело в том что если начать замер, но не окончен, но начат другой замер этой же компонентой, то можно считать что первый был некорректно завершен и нужно отправлять -1, чтобы однозначно выделить такую ситуацию, как в таблице так и в заббиксе.

Я подумаю еще насчет вложенности, в принципе можно передать вторым параметром уровень текущей вложенности. В общем подумаю...
+
7. capitan 2472 30.01.19 14:20 Сейчас в теме
Вроде же zabbix умеет читать apdex, почему так сделано ?
+
8. LLIKIPER 9 31.01.19 07:13 Сейчас в теме
(7) в 7.7 нет Apdex, но спасибо за комментарий, было полезно про него прочитать, а также наткнулся на статью отправки данных zabbix агентом из sql в zabbix (что собственно и делает моя служба)
+
9. capitan 2472 31.01.19 09:40 Сейчас в теме
(8)Пардоньте. Не обратил внимание что под 77
Тогда конечно заслуженный +
+
10. LLIKIPER 9 02.02.19 16:35 Сейчас в теме
Спасибо комментирующим! Узнал что все таки возможно отправлять замеры за прошедшее время и не требуется их усреднять. (Есть с версии 1.0.1.0)

Пока все, что планировал, сделал, вторую неделю обкатывается на работе. Если что-либо новое запланирую, напишу комментарием.

Я буду рад новым комментариям!
+
11. LLIKIPER 9 05.02.19 07:48 Сейчас в теме
Ну вот и первые плоды пошли(см. вложение)
Прикрепленные файлы:
+
Оставьте свое сообщение