Просмотр файлов технологических журналов 1С (WinAPI)

04.11.21

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

Программа просмотра файлов технологических журналов 1С (WinAPI). Работает с большими файлами. Минимальное потребление памяти при индексировании данных, просмотре. Анализ управляемых взаимоблокировок, таймаутов, ожиданий. Фильтры по событиям, периоду, пользователям, соединениям, сеансам.

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

Наименование Файл Версия Размер
Архив с программой просмотра файлов, readme, пример файла настроек сбора ТЖ
.zip 1,35Mb
28
.zip 1,35Mb 28 Скачать
Архив исходных кодов программы просмотра файлов ТЖ
.zip 3,84Mb
2
.zip 3,84Mb 2 Скачать

Обновление 04.11.2021

Исправлена ошибка фильтра Time. Исправлена утечка объектов GDI.

Обновление 21.09.2021

Добавлена цветовая визуализация сеанса источника блокировки и жертвы при анализе управляемых блокировок (см. скриншот "Результат анализа таймаута").

 

Основное

Программа просмотра файлов технологических журналов 1С (WinAPI).

  • Работает с большими файлами.
  • Минимальное потребление памяти при индексировании данных, просмотре.
  • Анализ управляемых взаимоблокировок, таймаутов, ожиданий.
  • Фильтры по событиям, периоду, пользователям, соединениям, сеансам.
  • Сортировка событий по времени с разных рабочих серверов кластера 1С.
  • Вывод рабочего сервера в строке состояния для события ТЖ.
  • Визуальное выделение текущего события.

С исходными кодами так же можно ознакомиться по ссылке: https://github.com/sdf1979/YellowViewer

При первом открытии каталога с файлами ТЖ анализируются и индексируются файлы (анализ 30Гб данных за 300 - 400 секунд, зависит от конфигурации компьютера). При последующих открытиях анализ и индексация не требуются.

См. также

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

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

13.03.2024    3585    spyke    28    

47

Анализируем SQL сервер глазами 1С-ника

HighLoad оптимизация Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих зааросов на sql, ожиданий, конвертация запроса в 1с и рекомендации где может тормозить

1 стартмани

15.02.2024    8299    169    ZAOSTG    74    

101

Удаление строк из таблицы значений различными способами с замером производительности

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    6581    doom2good    48    

65

Опыт оптимизации 1С на PostgreSQL

HighLoad оптимизация Бесплатно (free)

При переводе типовой конфигурации 1C ERP/УТ/КА на PostgreSQL придется вложить ресурсы в доработку и оптимизацию запросов. Расскажем, на что обратить внимание при потерях производительности и какие инструменты/подходы помогут расследовать проблемы после перехода.

20.11.2023    9414    ivanov660    6    

76

ТОП проблем/задач у владельцев КОРП лицензий 1С на основе опыта РКЛ

HighLoad оптимизация Бесплатно (free)

Казалось бы, КОРП-системы должны быть устойчивы, быстры и надёжны. Но, работая в рамках РКЛ, мы видим немного другую картину. Об основных болевых точках КОРП-систем и подходах к их решению пойдет речь в статье.

15.11.2023    5353    a.doroshkevich    20    

72

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16598    skovpin_sa    14    

101

«Монитор» – простой анализ производительности

Администрирование СУБД Технологический журнал Бесплатно (free)

Для расследования проблем производительности недостаточно просто проанализировать технологический журнал. Нужен парсинг контекста событий, его сопоставление с информацией из Extended Events и логов, агрегация огромного количества информации.

21.09.2023    5895    Andreynikus    14    

80
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. cleaner_it 220 14.09.21 04:08 Сейчас в теме
Как выглядит результат анализа взаимоблокировки?
+
2. sdf1979 198 14.09.21 07:37 Сейчас в теме
Отсортированные события ТЖ источника и жертвы приводящие к взаимоблокировке (SDBL - начало транзакции, TLOCK и TDEADLOCK)
+
3. ttt1380 14 18.06.22 18:06 Сейчас в теме
Добрый день!
Почему-то при указании верхнего каталога ТЖ, не чего не происходит. Просьба прокомментировать что ни так?
Если открывать каталог rphost конкретного, то там файлы считываются.
+
4. sdf1979 198 19.06.22 12:13 Сейчас в теме
(3)Добрый день!
Можете привести полный путь до каталога, с которым проблемы?
+
5. ttt1380 14 19.06.22 22:47 Сейчас в теме
(4) Сегодня снова попробовал нормально прочитал, настройки журнала правда другие были. Поэтому спасибо, пока отбой
+
6. aap290680 08.07.22 14:06 Сейчас в теме
Как в строке поиска отобрать события за период?
+
7. aap290680 08.07.22 14:39 Сейчас в теме
(6) вот так получилось: Time > "08.07.22 15:00:00" and Time < "08.07.22 15:05:29" !
+
8. sdf1979 198 08.07.22 21:29 Сейчас в теме
(6)
Переменные строки поиска:
Time=[Время], возможны операторы сравнения =, >=, <=, <>
Event="[ИмяСобытия]", возможны операторы сравнения =, >=, <=, <>, LIKE
Usr="[ИмяПользователя]", возможны операторы сравнения =, >=, <=, <>, LIKE
t:connectID=[НомерСоединения], возможны операторы сравнения =, >=, <=, <>
SessionID="[Сеанс]", возможны операторы сравнения =, >=, <=, <>, LIKE

Примеры строки поиска:
1. По значению события EXCP
Event="EXCP"
2. По имени пользователя
Usr="DefUser"
3. По части имени пользователя
Usr LIKE "DefUser%"
4. По соединению
t:connectID=2225
5. По сеансу
SessionID="1569"
6. По значению события EXCP и период с 1:00 до 2:00
Event="EXCP" AND Time>="24.05.21 01:00:00" AND Time<="24.05.21 02:00:00"
+
9. aap290680 12.07.22 14:38 Сейчас в теме
(8) Спасибо за ответ, а с точностью до секунды можно сделать? Если добавить в условия несуществующее поле, то выводится текст запроса и в нем видно, что секунды занулены.
+
10. sdf1979 198 12.07.22 17:02 Сейчас в теме
(9)
И до секунды и до миллисекунд можно (по крайней мере делал).
+
11. aap290680 13.07.22 08:58 Сейчас в теме
(10) Кажется при парсинге даты нарушен порядок или я некорректно ввожу дату с миллисекундами, ввожу: "Time >= "08.07.22 14:58:09.000000" and Time <= "08.07.22 14:58:10.880000"", получаю события с датами: 08.07.22 14:15:14.978000 и 08.07.22 14:15:14.978002, см. скриншот
Прикрепленные файлы:
+
12. aap290680 13.07.22 09:01 Сейчас в теме
(10) А если ввожу "Time >= "08.07.22 14:18:09.000000" and Time <= "08.07.22 14:18:10.880000"" то выводятся события правильно с 08.07.22 14:18:09.863001 по 08.07.22 14:18:09.941003
+
13. aap290680 13.07.22 14:56 Сейчас в теме
(10) Прошу прощения, не прочитал, что вы это исправили в версии от 2 ноября 2021 года. Скачал новую версию, все работает! Большое спасибо за продукт.
+
14. sdf1979 198 13.07.22 16:44 Сейчас в теме
(13)
Спасибо что сообщили об исправлении, а то планировал исправлять :-)
+
15. aap290680 13.07.22 17:23 Сейчас в теме
(14) Почему на таком событии TTIMEOUT при попытке анализа блокировки падает приложение:
06.07.22 11:03:14.784000-0,TTIMEOUT,5,process=rphost,p:processName=ХХХ,OSThread=6072,t:clientID=59173,t:applicationName=BackgroundJob,t:computerName=ХХХ,t:connectID=68873,SessionID=204996,Usr=DefUser,WaitConnections=68730,Context='
ОбщийМодуль.ХХХ.Модуль : 731 : БлокировкаДанных.Заблокировать();'

06.07.22 11:03:14.784002-20013985,TLOCK,4,process=rphost,p:processName=ХХХ,OSThread=6072,t:clientID=59173,t:applicationName=BackgroundJob,t:computerName=ХХХ,t:connectID=68873,SessionID=204996,Usr=DefUser,Regions=InfoRg35926.DIMS,Locks='InfoRg35926.DIMS Exclusive Fld35927=379:a9490050568e42b411ecfc4ff6ecf829 Fld37479=""',WaitConnections=68730,connectionID=61ef16da-c6c0-479e-a3f0-b96cd2e9a834,Context='
ОбщийМодуль.ХХХ.Модуль : 731 : БлокировкаДанных.Заблокировать();'

причину блокировки руками нашел, вот она как выглядит:
06.07.22 11:02:31.480140-6,TLOCK,4,process=rphost,p:processName=ХХХ,OSThread=5468,t:clientID=59030,t:applicationName=BackgroundJob,t:computerName=ХХХ,t:connectID=68730,SessionID=204944,Usr=esb,Regions=InfoRg35926.DIMS,Locks='InfoRg35926.DIMS Exclusive Fld35927=379:a9490050568e42b411ecfc4ff6ecf829 Fld37479=""',WaitConnections=,Context='
ОбщийМодуль.ХХХ...
ОбщийМодуль.ХХХ.Модуль : 588 : НаборЗаписей.Записать(ИСТИНА);'
+
16. sdf1979 198 13.07.22 19:01 Сейчас в теме
(15) Для расследования управляемых блокировок нужен следующий шаблон по событиям. Вы собирали по такому шаблону?
<log location="&LOGS_DIR;\TLOCKS" history="3">
<event>
<eq property="Name" value="TLOCK"/>
</event>
<event>
<eq property="Name" value="TTIMEOUT"/>
</event>
<event>
<eq property="Name" value="TDEADLOCK"/>
</event>
<event>
<eq property="Name" value="SDBL"/>
<eq property="Func" value="BeginTransaction"/>
</event>
<property name="all"/>
</log>
+
17. aap290680 13.07.22 19:10 Сейчас в теме
(16) Я не сам настраиваю журнал, админы это делают, поэтому точно не могу сказать, что настроен по шаблону такому. По всем остальным событиям прога не вылетает, выдает и событие блокировки и жертву, а приведенное выше событие при попытке анализа выбивает прогу.
+
Оставьте свое сообщение