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

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

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

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

  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 не будет опубликован. Обязательные поля помечены *