Кто запустил анализ журнала регистрации?

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

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

Признаками данной проблемы являются:

  1. Невозможно зайти в информационную базу.

  2. Почти 100% активность диска, на котором расположен журнал регистрации и активное чтение файла журнала регистрации процессом rmngr.

    Данный пункт можно проверить с помощью монитора  ресурсов (Диспетчер задач — Производительность — Открыть монитор ресурсов) на вкладке “Диск”.

    В группе “Запоминающие устройства” нужно обращать внимание на колонку “Активное время (%)”.

    В группе “Работа диска” нужно обращать внимание на колонки “Чтение” и “Файл”. Можно отсортировать по колонке “Чтение”. Среди первых строк с максимальной скоростью чтения будет процесс rmngr. Далее нужно смотреть имя читаемого файла, оно будет соответствовать журналу регистрации определенной информационной базы.

  3. В консоли администрирования кластера серверов 1С:Предприятие в списке сеансов почти у всех пользователей будет большое и приблизительно одинаковое значение в колонке “Захвачено СУБД” или в колонке “Время вызова (текущее)”.

 

При обнаружении проблемы нужно:

  1. Запомнить УИД ИБ, к которой выполняется чтение процессом rmngr.

  2. Запустить сбор технологического журнала на события EXCP, если еще не запущен.

  3. Сделать экспорт всех сеансов на проблемном сервере ИЛИ на проблемной ИБ с помощью консоли администрирования кластера серверов 1С:Предприятие, на случай, если понадобятся дополнительные данные для анализа.

  4. Перезапустить службу 1С:Предприятие.

  5. Собрать технологический журнал на время перезапуска сервера 1С:Предприятие.

  6. Проанализировать технологический журнал: выполнить поиск слов “ВыгрузитьЖурналРегистрации” или “UnloadEventLog”.

 

Пример:

29:40.069000-0,EXCP,4,process=rphost,p:processName=ib_accounting,t:clientID=114396,t:applicationName=1CV8C,t:computerName=COMP,t:connectID=109127,SessionID=1,Usr=ИвановИИ,AppID=1CV8C,ClientID=114389,Exception=NetDataExchangeException,Descr=Передача данных прервана по инициативе принимающей стороны.,Context=’Форма.Вызов : ВнешнийОтчет.АнализЖурналаРегистрации.Форма.Модуль.ФоновоеЗаданиеЗапустить

ОбщаяФорма.ФормаОтчета.Форма : 1242 : ВариантыОтчетов.СформироватьОтчетВФоне(ПараметрыФормированияОтчета, РезультатФоновогоЗадания.АдресРезультата);

   ОбщийМодуль.ВариантыОтчетов.Модуль : 2544 : Формирование = СформироватьОтчет(Параметры, Ложь, Ложь);

      ОбщийМодуль.ВариантыОтчетов.Модуль : 2060 : ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);

          ВнешнийОтчет.АнализЖурналаРегистрации.МодульОбъекта : 64 : ВыгрузитьЖурналРегистрации(ТЗ,Отбор,Колонки);’

По этой строке можно сказать кто: ИвановИИ, где (на каком компьютере): COMP, в какой информационной базе: ib_accounting запустил анализ журнала регистрации.

Проблема точно воспроизводится на версиях платформы: 8.3.9.2170, 8.3.9.2233.

42 Comments

  1. MSK_Step

    + за понятный мануал решения конкретной проблемы. Хотя у нас права на ЖР есть только у одного

    Reply
  2. Armando

    Если запустили просмотр ЖР из обычного приложения как определить сеанс?

    Reply
  3. tormozit

    Если штатную форму просмотра журнала регистрации открыли, то интересно как ловить это техножурналом?

    Reply
  4. tormozit

    На эту тему я написал в 1С пожелание https://partners.v8.1c.ru/forum/t/1645592/m/1645592 , чтобы дали возможность ограничивать длительность выборки.

    Reply
  5. metmetmet

    (3) Определение сеанса не зависит от типа клиента. Важно каким образом запущен анализ журнала регистрации. На моих экспериментах, к недоступности информационной базы приводило только выполнение метода ВыгрузитьЖурналРегистрации. Анализ журнала регистрации штатной формой или из конфигуратора не приводили к подобным проблемам.

    Reply
  6. metmetmet

    (4) На моих экспериментах, к недоступности информационной базы приводило только выполнение метода ВыгрузитьЖурналРегистрации. Анализ журнала регистрации штатной формой или из конфигуратора не приводили к подобным проблемам.

    Reply
  7. tormozit

    (7) Это потому что использовалась динамическая выборка или низко селективный фильтр. Динамическая выборка выбирает только до заполнения видимого числа строк журнала (+ возможно одну страницу). Поэтому в среднем она намного быстрее завершает выборку. Но ведь можно и очень редкие события отбирать или статическую (полную) использовать.

    Reply
  8. Armando

    (4) думаю надо анализировать события system или call

    Reply
  9. tormozit

    (8) Опечатка. Не «динамическая выборка или низко селективный фильтр», а «динамическая выборка и низко селективный фильтр, т. е. в таблице часто встречаются строки ему удовлетворяющие».

    Reply
  10. metmetmet

    (9) События CALL, SCALL записываются в технологический журнал после их выполнения. По этим событиям можно анализировать у кого анализ журнала регистрации завершился успешно. Имя искомого метода «fetchLogEntriesDataBkwd».

    P.S.

    Имя метода «fetchLogEntriesDataBkwd» получено экспериментальным путем, теоретического или официального подтверждения не имею.

    Примеры событий ТЖ
    Reply
  11. Armando

    (11) system пробовали анализировать?

    Reply
  12. metmetmet

    (12) Нет, не пробовал, т.к. в боевом режиме 1С не рекомендует его использовать, поэтому практической пользы не будет.

    Reply
  13. Armando

    Мое небольшое исследование на эту тему привело к такому содержнию файла настройки ТЖ:

    <log history=»24″ location=»D:TempLog»>
    <property name=»all»/>
    <event>
    <eq property=»name» value=»SYSTEM»/>
    <eq property=»class» value=»LogMngrSQLiteData»/>
    <eq property=»func» value=»fetchLogEntries»/>
    <eq property=»level» value=»INFO»/>
    </event>
    <event>
    <eq property=»name» value=»SYSTEM»/>
    <eq property=»class» value=»LogMngrData»/>
    <eq property=»func» value=»fetchLogEntriesDataBkwd»/>
    <eq property=»level» value=»DEBUG»/>
    </event>
    <event>
    <eq property=»name» value=»SYSTEM»/>
    <eq property=»class» value=»LogMngrData»/>
    <eq property=»func» value=»fetchLogEntriesDataFwd»/>
    <eq property=»level» value=»DEBUG»/>
    </event>
    </log>
    <system level=»info» component=»backbas» class=»LogMngrSQLiteData»/>
    <system level=»debug» component=»backbas» class=»LogMngrData»/>

    Показать

    class=»LogMngrSQLiteData» — новый формат ЖР.

    class=»LogMngrData» — старый формат ЖР

    Платформа 8.3.10.2561. Тестировал на файловом и серверном режиме. В конфигураторе, в тонком клиенте, в толстом клиенте (обычное приложение). На старом и новом форматах журнала регистрации. Просмотр встроенными средствами и выборка методом ВыгрузитьЖурналРегистрации().

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

    Для ЖР в формате SQLite выводит в ТЖ исполняемый запрос.

    Reply
  14. metmetmet

    (14) Эти события в ТЖ будут попадать только после выполнения?

    Reply
  15. Armando

    (15) не проверял, т.к. не было под рукой тестовой базы с ЖР большого объёма. Но длительность событий в некоторых случаях точно была 0, что наводит на мысль.

    Reply
  16. awk

    А зачем знать пользователя?

    Reply
  17. metmetmet

    (17) Чтобы у него узнать причину анализа журнала регистрации и предотвратить в дальнейшем. Анализ большого журнала регистрации с «плохими» (селективным) отбором может приводить к недоступности информационной базы.

    Reply
  18. awk

    (18) Ну узнали и что дальше? Базы (база это частный случай) станут доступными?

    Reply
  19. user634257_mryzhov

    (7) Подобная же ошибка возникала при обычном отборе в списке журнала регистрации. Отбор по пользователю и объекту метаданных. Объем журнала регистрации был порядка 60гб.

    На текущий момент решаем проблему регламентным урезанием журнала регистрации.

    Reply
  20. user634257_mryzhov

    (10) При выборке с параметром «Отобрать сразу» также сталкивались с зависанием сервера.

    Reply
  21. user634257_mryzhov

    Интересно можно ли устранить блокировку работы 1С, при запросе к журналу регистрации.

    Reply
  22. Infactum

    1С не рекомендует использовать новый формат журнала регистрации для высоконагруженных баз.

    Reply
  23. PerlAmutor

    Тоже долгое время мучались с этим. Иногда пользователь не виноват, порой жмут кнопку какого-нибудь отчета или гиперссылку из документа, а она автоматически начинает делать отбор по ЖР. Пока не перевели на старый формат решали это через конфигуратор, там выставили двум-трем админам права просмотра ЖР и все.

    Reply
  24. metmetmet

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

    Reply
  25. Armando

    (15) Проверил на серверной базе с большим ЖР старой версии. К сожалению при использовании метода ВыгрузитьЖурналРегистрации() событие выводится в журнал после успешного выполнения(

    Reply
  26. awk

    (25)

    1. Не только. Журнал регистрации пишет менеджер кластера. Можно перезапустить именно его, а не сервер в целом.

    2. Если не хотите что бы повторялось, то отключите журнал регистрации.

    P.S.

    Сокращу наш диалог.

    Журнал регистрации — это инструмент. У нас им пользуются ВСЕ!!! Баз чуть больше чем много. Размеры журналов превышают 20 гигобайт. Задача нашего отдела — обеспечение бесперебойной работы. С чем мы успешно справляемся. А вы на мой взгляд занимаетесь маскировкой проблемы (задачей бессмысленной и вредной). Вам надо не тех. журнал настраивать, а оборудование прокачивать.

    Reply
  27. tormozit

    (27) Видимо журналы у вас в старом формате?

    Reply
  28. awk

    (28)Сергей, мое почтение. В новом… У нас оборудование соответствует задаче.

    Reply
  29. tormozit

    (27) Тогда думаю многим было бы интересно узнать подробнее о том, как достичь такого. Мне не удавалось. Предлагаю начать с примера отбора по журналу размером 20ГБ в режиме «Отобрать сразу» по «Данные=<Какой то древний элемент справочника>». Интересуют сколько времени это выполняется и скрины списка сеансов в базе из консоли кластера через 1-2-3 минуты.

    Reply
  30. awk

    (30) Боюсь это не возможно. По причинам:

    1. Раскрытие параметров оборудования приведет к моему увольнению

    2. Эксперименты в рабочем контуре и публикация результатов приведут к моему увольнению

    3. У меня трое детей — мне их кормить надо.

    У нас отдел информационной безопасности не студенты. Я уже и статьи-то на инфостарт перестал публиковать, по соображениям не технического характера…

    По слухам СХД нам обошлось как две теслы…

    Reply
  31. tormozit

    (31)

    1. Я не просил параметры оборудования.

    2. Подойдет и реальный пример такого рода. Наверняка вы иногда проводите расследования типа «кто мог установить неверное значение реквизита в документе/контрагенте?». Вот хотелось бы узнать сколько времени выполняется отбор по значению поля «Данные». Можно даже без «отобрать сразу». Скриншоты из консоли кластера с замазанными именами пользователей кажется не должны подрывать безопасность.

    Reply
  32. awk

    (32)

    Запуск в тестовом контуре:

    Размер лога 21.9 Гб

    Первый запуск

    Загрузка данных журнала выполнена за 0:10:30

    Повторный запуск

    Загрузка данных журнала выполнена за 0:01:01

    . Очередь к диску (средняя) 0.3 Падение производительности было заметно (если и было) только на одном кластере. Запуск был на тестовом контуре 256 Гб оперативки, старый СХД (но на ССД дисках) 16 физических ядер (32 логических) 2.4

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

    Анализ журнала производился твоей обработкой, по данным последний раз обновленным более года назад. В ЖР по ним событий не найдено.

    Reply
  33. tormozit

    (33) Так тут центральным является вопрос снижения параллельности работы пользователей. Поэтому тестовые базы не очень наглядно проверять.

    Reply
  34. awk

    (34) Тут вопрос вообще не технический. Тут вопрос административный: «Как организовать работу»?

    Reply
  35. awk

    Я начал писать сюда с вопроса: «Зачем знать пользователя»? Написал я это лишь потому, что смысла в знании не вижу — это не повысит паралельность. Никаких проблем с журналом нет, при соблюдении следующих условий:

    1. Определен круг пользователей допущенных до журнала.

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

    3. Базы распределены по кластерам (за ЖР отвечает менеджер кластера).

    4. Журналы режутся.

    Reply
  36. Altair777

    (36) В этим с предыдущими высказываниями почти полностью согласен. Есть же правило — что не запрещено, то разрешено. Если не запретили и не научили как надо, то сами виноваты. А если такие страшные последствия, то запретите всем «непродвинутым» и делайте анализ сами по запросу. Это этого пользы будет больше, чем потом с гордым видом и горящими глазами искать виноватых и сулить им всяческие кары — отлучение от церкви, премии, корпоративных пьянок (нужное подчеркнуть) 🙂

    (18) Вы не могли бы привести пример дальнейших действий после узнавания причины анализа ЖР? Как и характерный пример самой причины.

    Reply
  37. metmetmet

    (37) Пример дальнейших действий: лишить пользователя прав на доступ к ЖР, проанализировать необходимость получения данных из ЖР для пользователя, просто сообщить об инциденте ответственному человеку со стороны заказчика.

    Причина: компания разработала обработку, в которой ошибки и служебная информация записываются в ЖР, и сообщила заказчику, что всю информацию о работе обработки нужно получать из ЖР. Некоторые сотрудники заказчика решили проанализировать работу обработки.

    Reply
  38. metmetmet

    (36) Очень здорово, когда есть возможность использовать СХД, SSD, на которых чтение 20Гб ЖР занимает 10 секунд. Но чаще всего пользователям не нужен доступ к ЖР и, конечно, правильным решением будет ограничение доступа.

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

    Можете рассказать как вы обрезание ЖР: с помощью функций работы с ЖР, просто перемещает файл, напрямую работаете с файлом ЖР или что-то другое?

    Reply
  39. asved.ru

    Нечего там анализировать. С новым форматом вы сделать ничего не сможете. Переходите на старый, он хотя и медленный, и на чтении систему грузит, но не виснет.

    В некоторых случаях удобным решением может быть внешнее хранение ЖР.

    Reply
  40. le_

    Неужели кто-то пользуется штатным ЖР?..

    У нас он везде отключен и сделан собственный на основе регистра сведений.

    Reply
  41. awk

    (39) У нас на кэш и журналы выделено N Гб. Когда место заканчивается (о чем нас предупреждает zabbix), мы делаем ночью:

    net stop <service 1C name> — остановка сервера

    move <1C folder> <1C folder>_<date> — переименование папки сервера 1С

    XCOPY <1C folder>_<date>/*.lst <1C folder> — восстанавливаем все кроме логов

    net sart <service 1C name> — запуск 1С. До этого момента даже на слабом сервере с IDE дисками 60 секунд не более пройдет

    7z a -tzip <archive path><1C folder>_<date>.zip <1C folder>_<date>

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

    И 10:30 — это десять с половиной минут. Это много, но меньше времени реакции отдела (объективной).

    Reply
  42. D-masterrr

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

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *