Графическое представление технологического журнала, или Гант наглядности

12.07.22

База данных - Технологический журнал

Можно ли упростить восприятие технологического журнала 1С? Понять смысл информации, содержащейся в нём, не прибегая к скриптам, и одним взглядом, охватив его графическое представление, выявить узкие места в системе? Попробуем в этом разобраться.

Бесплатные

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

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Графическое представление технологического журнала, или Гант наглядности:
.py 8,90Kb
72 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Технологический журнал 1С, в дальнейшем ТЖ, представляет собой набор текстовых файлов, структурированных определённым образом. В дальнейшем будем иметь дело с одним файлом. Даже один файл, собираемый в варианте полного ТЖ (все события, но без специфических свойств), может занимать десятки гигабайтов.

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

Выберем из ТЖ события: SDBL, DBMSSQL, TLOCK, TDEADLOCK, TTIMEOUT. Сделать это можно либо посредством соответствующей настройки файла logcfg.xml, либо, обработав полный ТЖ скриптом, к слову, скриптами воспользоваться всё равно пришлось, хотя бы для того, чтобы привести файл ТЖ к виду, когда каждое событие занимает одну строку.

Итак, как же изобразить полученный ТЖ?

Каждое событие, отражённое в ТЖ, имеет протяжённость во времени, и этот факт существенен, например при анализе длительных транзакций, запросов или ожиданий. По этой причине наиболее удачным графическим представлением ТЖ автор считает диаграмму Ганта.

Так выглядит ТЖ, собранный при выполнении нагрузочного тестирования.

 

Немного о том, как эта диаграмма была построена. Анализом ТЖ занимался код, написанный на python, а непосредственная визуализация была доверена одной из его библиотек - plotly.

Почему plotly?

Главным образом потому, что она интерактивна, позволяет масштабировать диаграмму.

 

Получаем выделенный фрагмент.

 

Что же из этого можно понять?

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

 

 

Как видно, состояние одного пользователя характеризуется двумя линиями (прямоугольниками) верхней и нижней. Нижняя показывает транзакцию, как правило она зелёного цвета, верхняя – ожидание (жёлтого или оранжевого цвета, в зависимости от того, дождались или нет) или выполнение запроса (синего цвета).

Рассмотрим фрагмент диаграммы

 

 

Транзакция выделяется жёлтым цветом, если она является виновником ожидания. Хорошо видно, что в момент времени, когда закончилась «жёлтая» транзакция, закончилось ожидание в транзакции пользователя Админ_ТЦ0000004_1482. Кроме свойства интерактивности библиотека plotly позволяет передавать произвольные данные в диаграмму, а после просматривать, наведением курсора на заинтересовавшую линию (событие). Для ожидания имеет смысл анализировать заблокированный ресурс и пользователя, чья транзакция его держит, что и отражено на представленной выше диаграмме.

Итак, посчитав количество «жёлтых» транзакций, получаем представление о количестве ожиданий на управляемых блокировках в системе.

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

 

 

Транзакция-жертва заканчивается вместе с прерванным ожиданием.

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

 

 

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

 

 

Обратимся к диаграмме ТЖ реальной базы, на качество работы которой есть жалобы со стороны пользователей.

 

 

Визуально определим область наибольшей концентрации событий. Диаграмма, построенная библиотекой plotly, позволяет менять фокусировку и возвращаться к исходному виду без её повторного перестроения.

 

 

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

 

 

За что зацепиться?

Просто просматривать контексты всех запросов довольно бессмысленное занятие, хотя и не отнимающее много времени. Но всё-таки есть несколько вещей, обращающих на себя внимание.

 

 

Во-первых, работа пользователя _93 (в красном прямоугольнике). Необычно то, что действия почти регулярны, и несмотря на то, что пунктиры выглядят маленькими, в действительности их длительность варьируется от 1,5 до 7 секунд, и кроме того, все эти события имеют схожий контекст.

 

 

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

В-третьих, внимания заслуживают запросы в транзакциях, поскольку здесь могут быть блокировки, эскалация блокировок, в том числе на СУБД.

 

 

Однако, вот что интересно, если подвергнуть файл ТЖ анализу скриптом, то результат будет выглядеть так:

 

 

Эти контексты уже попадали в поле нашего зрения…

Возможен и иной взгляд в рамках графической парадигмы. Будем отображать только событие DBMSSQL, но раскрашивать станем в соответствии с контекстом таким образом, что контекст первой в рейтинге суммарной длительности будет красный, второй – оранжевый, третий – зелёный, четвёртый – синий, пятый – фиолетовый, а все прочие контексты будут отмечены чёрным.

 

 

Такой график в купе с данными о загрузке процессора или апдекса может быть ещё наглядней. Станет очевидно, контексты каких запросов влияют больше.

Этим вариантом графический подход не исчерпывается. В ТЖ ещё много событий, на которые было бы интересно посмотреть в развёрнутом во времени виде.

Данный подход, по мнению автора, может быть полезным в решении некоторых вопросов технологической экспертизы 1С и может несколько упростить анализ ТЖ. Представленная же реализация не раскрывает всех возможностей графического подхода и не может рассматриваться как самодостаточный инструмент наравне с ЦУП. Однако, может дать представление о характере загруженности, о том какие пользователи внесли больший вклад в загруженность системы и в какое время, а также оценить количество ожиданий, таймаутов и взаимоблокировок.

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

ТЖ Технологический журнал Диаграмма Гант Анализ Python Plotly Блокировка Взаимоблокировка

См. также

Технологический журнал Системный администратор Разработчик 1С 8.3 Бесплатно (free)

База ERP, 400 пользователей, сервер загружен, 1С подвисает, доступа к SQL Server нет. Оптимизировать можно бесконечно, вопрос в том, с чего начать. ЦУП это платная лицензия и отдельная стройка, а технологический журнал встроен в платформу, включается одним файлом и на боевой базе в рабочее время не вызвал ни одной жалобы от пользователей. Разбираю, что он собой представляет, где лежит настройка, как читается строка события и что означает каждое из одиннадцати событий, которые я видел в журналах боевой ERP. Плюс рабочий logcfg.xml, три ловушки, на которых отчёт получается красивым и неверным, и шесть находок за один прогон.

07.09.2026    1487    nedomolkov.ivan    0    

3

Технологический журнал Системный администратор Разработчик 1С 8.3 Абонемент ($m)

Обработка включает технологический журнал, читает его и отвечает на 13 вопросов человеческим языком: кто блокирует базу, какой запрос к СУБД самый тяжёлый, какой код суммарно грузит СУБД больше всех, какой вызов съедает память. Настройка идёт галочками с человеческими формулировками, logcfg.xml обработка пишет сама, права администратора для этого обычно не нужны. Отдельная кнопка сводит журнал в один markdown-файл: на боевой ERP 288 МБ и 2 055 229 строк ужались в 17 459 знаков, файл кладётся в чат с нейросетью и разбирается за минуту. Имена баз и пользователей в нём заменены псевдонимами. Без внешних компонент, к СУБД обращений нет.

10 стартмани

07.09.2026    824    2    nedomolkov.ivan    0    

2

Технологический журнал Мониторинг Мессенджеры и боты Системный администратор Разработчик 1С 8.3 1С 8.5 Россия Абонемент ($m)

Лёгкое расширение для 1С, которое ловит ошибки — включая упавшие внутри транзакции проведения и не замеченные типовыми средствами — и сразу шлёт алерты в Telegram и на почту. Не заимствует ни одного объекта конфигурации, ставится на любую базу (типовую или самописную, с БСП или без) за 5 минут. Дедуплицирует повторы, не спамит при шторме ошибок, маскирует персональные данные перед отправкой наружу. Работает даже при отключённом администратором штатном Журнале регистрации — у расширения есть собственный независимый журнал самодиагностики.

3 стартмани

25.08.2026    565    1    KonMa    0    

2

Технологический журнал Системный администратор 1С 8.3 Бесплатно (free)

Профессиональное (почти) руководство по поиску и устранению утечек памяти в 1С: анализ дампов, технологического журнала, временного хранилища, форм, фоновых заданий и циклов удержания. Полный алгоритм расследования мёртвого кэша.

24.08.2026    1234    Ninel_S    3    

2

Технологический журнал Разработчик 1С 8.3 Россия Бесплатно (free)

Устал парсить ТЖ 1С gawk-скриптами каждый раз заново - собрал нормальный инструмент. DuckDB под капотом, разбор ТЖ, планов под MS SQL и PostgreSQL, AI-объяснения опционально.

08.07.2026    5760    nazarovss    33    

27

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

Чтобы перейти от тушения инцидентов в 1С к превентивному подходу, нужно заранее видеть рост данных, блокировок, времени выполнения операций и другие признаки будущих проблем. Разбираем, какие метрики технологического журнала 1С и СУБД стоит мониторить в реальном времени и как использовать простые ML-модели – регрессию и классификацию – для прогноза падения производительности. Объясняем, как автоматически выявлять аномалии в поведении пользователей и фоновых заданий, настраивать proactive-алерты за часы или дни до инцидента и создавать тикеты в ITSM-системах на превентивные действия.

02.07.2026    4554    aidar_safin    17    

32

Технологический журнал Разработчик Бесплатно (free)

Парсинг техжурнала 1С – это не просто «распарсить JSON» или CSV, а работа с множеством неочевидных особенностей формата. Показываем, какие проблемы могут возникнуть из-за дублей свойств и событий, «полей-призраков», нестандартных имен свойств, разрозненного контекста, кавычек, апострофов и других нюансов, которые легко ломают парсеры и искажают результаты анализа. Объясняем, чем может помочь ИИ при работе с техжурналом и почему даже при использовании современных инструментов важно понимать внутреннюю логику логов. В статье собраны главные правила надежного парсинга и примеры ситуаций, где техжурнал может неожиданно показать свою «темную сторону».

17.06.2026    5177    Andreynikus    9    

26

Технологический журнал Мониторинг Разработчик 1С 8.3 Абонемент ($m)

Решение-заготовка для автоматического мониторинга и расследования технологических инцидентов в случаях невозможности использования решений КИП.

1 стартмани

29.05.2026    2705    8    tori131313    3    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mrChOP93 99 13.07.22 06:36 Сейчас в теме
А сама программа для скачивания представлена будет?
maXon777; +1 Ответить
5. sinichenko_alex 221 19.07.22 06:18 Сейчас в теме
(1) Наверное не для скачивания, а все же для запуска. Вообще судя из расширения файла это скрипт для питона, устанавливайте питон на ПК и вперед.
6. mrChOP93 99 19.07.22 06:40 Сейчас в теме
(5) Когда я писал комментарий, к публикации не было приложено файла
2. Eugeeny 53 13.07.22 07:31 Сейчас в теме
Файл с кодом добавлен. Но для его корректной работы, необходимо внести незначительные изменения в библиотеку plotly, в метод _gantt. Найти нужное место можно по первым двум строкам-комментариям
# If group_tasks is True, all tasks with the same name belong
# to the same row.
groupID = index
if group_tasks:
groupID = task_names.index(tn)
if tasks[index]["resource"] == 'SDBL' or tasks[index]["resource"] == 'SDBLw' \
or tasks[index]["resource"] == 'SDBLt' or tasks[index]["resource"] == 'SDBLd':
tasks[index]["y0"] = groupID - bar_width
tasks[index]["y1"] = groupID
else:
tasks[index]["y0"] = groupID
tasks[index]["y1"] = groupID + bar_width
3. ivanov660 4984 13.07.22 21:25 Сейчас в теме
Идея интересная, но вот при большом количестве пользователей картинка превращается в не воспринимаемую, на мой взгляд. Тут наверное только сверточные сети тренировать на выявления проблем. Или еще что-то придумать.
4. Eugeeny 53 14.07.22 06:49 Сейчас в теме
Да, такая проблема есть, но можно ограничить выборку по длительности события с помощью переменной limit_duration, например, указать 1 000 000, то есть 1секунда. Это может сократить количество пользователей.
Для отправки сообщения требуется регистрация/авторизация