Анализ технологического журнала утечек памяти

14.11.15

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

Конфигурация предназначена для отчитки файлов технологического журнала и помещения данных в базу для дальнейшего анализа. Есть аналоги данного творения, но эта конфигурация заточена только именно для анализа действий CALL и LEAKS. Если заинтересовались, заходим в подкаст.

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

Наименование Файл Версия Размер
Конфигурация
.cf 125,44Kb
96
.cf 1 125,44Kb 96 Скачать

Преамбула:

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

Вступление:

А все началось с того, что на сервере просто в какие-то из моментов попросту пропала память. 

Процессор: 2х Intel Xeon X5660 2.8 ГГц

ОЗУ: 96 ГБ.

ОС:Win server 2008 R2 enterprise SP1 64x

MS SQL Server 2012. Выделено памяти 50 ГБ.

1С Сервер 64 (8.3.6.2237)

УТ11 (11.1.9.56) – 9 баз. Самая большая база – 110 Гб, Общий объем баз-  150 ГБ

Поднимались соответсвующие вопросы на официальном сайте партнеров, но, как обычно время шло, проблема жила. То есть нет на сегодняшний день никакой панацеи - это очень и очень хлопотный труд, и готовьтесь пройти полный [...цензура...] до решения этой проблемы. Я уж и не говорю, сколько пришлось промониторить объемов журнала и сколько раз настроить кластер сервера 1С, чтобы в какой-то момент утечка просто пропала. То есть получается, что нет чего-то конкретного, чтобы Вы нажали что-то и у Вас утечки ушли, эта работа очень комплексная и устранять придется все комплексно и, как мне кажется, каждый из случаев уникальный, кому-то просто помогает перезапуск rphost. ТЖ не показывает утечку памяти, а лишь только на подозрение, то есть показывает, какой объем памяти был не освобожден. Вот только ТЖ не знает о том, что этот объем памяти мог быть освобожден в действительности только позже. Это очень просто воспроизвести обычно на штатном отчете Товары организаций в УТ 11, в ТЖ будут идти как бы утечки, но rphost.exe потом освободится, и такого рода поиск очень сильно ставит в тупик с поиском утечек в коде 1С... Но все же, вручную анализировать такие талмуты файлов просто нереально и хочется иметь хоть какой-то инструмент, в котором можно будет быстренько наложить определенные отборы, например, в момент проблем, которое попало в счетчики Perfomence Monitor и дальше иметь хоть какую-то картинку. 


В БОЙ !!!

Для использования конфигурации следует использовать платформу не младше 1С:Предприятие 8.3 (8.3.6.2237). Конфигурация рассчитана для клиент-серверного использования. Здесь я сделал подход отчитки файлов в несколько потоков, максимум можно задействовать 7 потоков, но следует вначале проэкспериментировать и поэтому по умолчанию установил 1 поток. Потому как отчитка файлов очень серьезно нагружает кластер, если задействовать много потоков, будьте внимательны.

Как работать с конфигурацией?

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

Разворачиваем конфигурацию на серверной площадке. В меню Сервис, выбираем "Пакетный анализ утечек ТЖ", после чего необходимо указать каталог ТЖ. Размещение должно быть таковым, чтобы после родительского каталога шли каталоги rphost_. Анализируются только каталоги первого уровня и только с маской rphost_. В меню сервис также есть обработка отчитки конкретного лог-файла, результат которой будет выведен визуально в табличной части. Бывают моменты, что надо проанализировать только определенный файл для понимания.
Хочу подчеркнуть, что здесь будут загружены только те свойства, у которых есть значение Memory, и они в указанном пороге Мб (даный порог рассчитывается, поскольку в ТЖ указано в байтах). Также система пытается найти после события CALL или SCALL свойство LEAKS и, если находит, то автоматически привяжет его к текущему событию вызова.

В меню регламентые и фоновые задания можно просмотреть процесс выполнения, а также более конкретно можно это увидить в "Состояние загрузки файлов", где видно, какой именно файл загружает или уже загружен и каким из потоков фоннового задания. Обработано строк с шагом обновления 1000 строк (так что не удивляемся, если файл в состоянии Готов и 0 строк)

Рекомендации:

Рекомендации по настройке logcfg.xml, для анализа не следует перегружать журнал другими настройками, я не могу гарантировать адекватного поведения отчитки данных. 

<?xml version="1.0" encoding="UTF-8" ?> 
<config xmlns="http://v8.1c.ru/v8/tech-log">
 <log location="D:\TJ-Leaks" history="24">
 <event>
  <eq property="name" value="call" /> 
  </event>
 <event>
  <eq property="name" value="leaks" /> 
  </event>
  <property name="all" /> 
  </log>
 <leaks collect="1">
  <point call="server" /> 
  </leaks>
</config>


Также весьма рекомендую использовать редактор EmEditor Professional сайт разработчиков  для интерактивного открытия log-файлов больших размеров. 1С , во-первых, открывая такой файл, очень сильно забирает память и во-вторых если она файл не может открыть то просто вылетит. Редактор порадовал, ограничение его 254 Гб текстового файла и самое интересное, открыв файл в 2.5 Гб я увидил лишь 300 Мб которую взял на себя данный редактор.

Паралельно разрабатывая эту конфигурацию наблюдал такое:

Точнее сказать, здесь ничего такого нет и понятно, что для склеивания одной строки с другой нужно время, чтобы выделить участок памяти. Вопрос, а если времени нет и это влияет на производительность, что тогда? Благо разработчики 1С дали такой выход, и эта возможность появилась с релиза 8.3.6.1977. Сразу хочу подчеркнуть, что эти функции не будут работать, если конфигурация работает в режиме совместимости. Так вот, выкладываю замеры (прикрепил изображение с замером наблюдения) производительности при обычном склеивании строк и при использовании новой возможности СтрСоединить().

В закомментированой части кода, не побоюсь этого слова, поражающее ускорение, что в принципе порадовало. И, в общем, мне удалось сэкономить не одну минуту работы. Поскольку файлы анализа более 6 млн. строк. 

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

Выдержка из синтаксис помощника:

Глобальный контекст (Global context)

СтрСоединить (StrConcat)
Синтаксис:

СтрСоединить(<Строки>, <Разделитель>) 

Параметры:
<Строки> (обязательный)

Тип: ФиксированныйМассивМассив
Массив, содержащий объединяемые строки. 

<Разделитель> (необязательный)

Тип: Строка. 
Строка, которая будет вставлена между объединяемыми строками.
Если параметр не задан, строки будут объединены слитно друг с другом.
Значение по умолчанию: Неопределено. 

Возвращаемое значение:

Тип: Строка
Строка, содержащая соединенные исходные строки с разделителем между ними. 

Описание:

Соединяет массив переданных строк в одну строку с указанным разделителем.
Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

Спасибо всем, кто нашел время и дочитал все это до конца и решился попробовать этот инструмент.

Анализ технологического журнала Анализ ТЖ Анализ ТЖР Технологический журнал Утечки памяти Утечка памяти Утечка

См. также

Примеры настроек технологического журнала

Технологический журнал Платформа 1С v8.3 Бесплатно (free)

Шпаргалка по настройке технологического журнала.

27.04.2024    3040    kuzyara    5    

96

Магия преобразований Vector, часть 2: технологический журнал

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

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

15.11.2023    910    4    AlexSTAL    0    

8

Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

Мониторинг Журнал регистрации Технологический журнал Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

13.11.2023    3354    5    AlexSTAL    0    

45

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

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

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

21.09.2023    6056    Andreynikus    14    

81

Экспорт технологического журнала 1С в Elastic с помощью Logstash

Технологический журнал Платформа 1С v8.3 Абонемент ($m)

Целью данного решения является организация хранения и анализа данных из технологического журнала 1С с использованием стека Elasticsearch + Logstash + Kibana.

5 стартмани

18.09.2023    3668    huxuxuya    3    

24

Мобильный помощник эксперта 1С (приложение android, позволяющее строить отчеты на СКД по логам технологического журнала и не только)

Технологический журнал Мониторинг Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

16.05.2023    3566    capitan    0    

24

Разбор технологического журнала без боли и страданий

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

Технологический журнал - мощный инструмент логирования, используемый для анализа проблем производительности 1С. Но он обладает одним огромным недостатком, в "сыром виде" он почти не поддается адекватному анализу из-за своей структуры. Существует довольно много способов "разобрать" технологический журнал, но все опробованные способы обладают теми или иными недостатками. Предлагаю вам мой вариант "велосипеда" для разбора ТЖ и хранения разобранного в различных форматах.

1 стартмани

12.12.2022    8558    39    Segate    26    

90
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Armando 1400 14.11.15 15:44 Сейчас в теме
Участвовал в твоих темах на партнерке. То есть проблемы с памятью и нагрузкой на cpu решились сами собой без какого либо вмешательства в код и настройки кластера?
2. logarifm 1121 14.11.15 17:32 Сейчас в теме
(1) Armando, пока только с памятью удалось разобраться. насчет CPU проблемы остались в основном это отчеты.
3. set5553 15.11.15 19:43 Сейчас в теме
Как разобрались с памятью? Что для этого сделано?
4. logarifm 1121 16.11.15 00:46 Сейчас в теме
(3) set5553, Честно как я и написал выше - это очень и очень долгий процесс и разговор...
5. Armando 1400 16.11.15 02:20 Сейчас в теме
(4) можешь коротко описать какие конкретно действия привели к результату, а не как ты дошел к этим действиям?
6. flatnis 16.11.15 14:45 Сейчас в теме
Можно уточнить? Под утечкой подразумевается неосвобождение памяти рабочими процессами 1С? Или неконтролируемая утечка, с которой нельзя сопоставить ни один процесс на сервере? Блин, сумбурно написано:) Смысл в том, что есть два вида утечек. Первый - это корявый код, к примеру, с рекурсиями переменных на самих себя. После выполнения такого кода rphost не освобождает память ОЗУ, которую он задействовал для выполнения операции.
А есть утечка, когда вроде и процессы на компьютере не занимают много памяти, а доступного ОЗУ совсем нет. События ТЖ LEAKS помогают поймать утечку второго рода? Или только она для первого варианта?
7. Armando 1400 16.11.15 20:25 Сейчас в теме
(6) flatnis,
События ТЖ LEAKS помогают поймать утечку второго рода? Или только она для первого варианта?

Нет. Да.
8. cheburashka 41 14.12.15 12:18 Сейчас в теме
Запустил пакетный анализ утечек ТЖ и получил ошибку:

Ошибки выполнения: 
Деление на 0
    РазмерПорции = Цел(ЧислоСтрокВТаблице/ЧислоПотоков);


Поток 1
Объем неосвобожденной памяти: 10 Мб.
9. logarifm 1121 22.12.15 23:24 Сейчас в теме
(8) cheburashka, База файловая или клиент-серверный вариант ?
12. MURzzz 94 26.09.19 15:58 Сейчас в теме
(8)
Запустил пакетный анализ утечек ТЖ и получил ошибку:

та же проблема, база клиент-сервер
10. cheburashka 41 17.04.16 14:25 Сейчас в теме
Извиняюсь за столь длительное молчание. База конечно клиент-серверная.
11. Danil.Potapov 516 01.12.16 11:39 Сейчас в теме
а где посмотреть замеры по строкам ?
13. user1461477 15.09.21 13:21 Сейчас в теме
апну тему, ибо

утечки - это весьма печально
14. ffess 68 11.02.22 16:13 Сейчас в теме
Как и у других комментаторов, при попытке воспользоваться "Пакетный анализ утечек ТЖ" получил ошибку.


Ошибки выполнения:
Деление на 0
РазмерПорции = Цел(ЧислоСтрокВТаблице/ЧислоПотоков);
Оставьте свое сообщение