пятница, 31 июля 2015 г.

Знакомство с технологическим журналом 1С


Не так давно открыл для себя нечто новое, оказывается есть технологический журнал (ТЖ). Что это за зверь такой и для чего он нужен попытаюсь ответить в этой статье.

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

  • при выполнении какого кода «падают» рабочие процессы сервера
  • какие запросы работают медленно и откуда они вызываются
  • Посмотреть были ли взаимоблокировки или блокировки по таймауту
  • и  многое другое.   

Что же собой представляет ТЖ? А представляет собой ТЖ совокупность текстовых файлов, хранящихся в указанном каталоге. 
Файлы эти можно разделить на 2 группы 

  • файлы дампа
  • файлы логов

Логи – это файлы с расширением log, где информация хранится в текстовом виде. 
Дампы – это файл с расширением mdmp, который содержит в себе содержимое оперативной памяти процесса на момент «падения» .  


Идем дальше. А в каком каталоге хранятся файлы ТЖ?. 
По умолчанию   ТЖ создается в каталоге:
 %USERPROFILE%\Local Settings\Application Data\1C\1Cv82\ 
Если используется Windows Vista и выше, то будет использоваться каталог: %LOCALAPPDATA%\1C\1Cv82\
Для 8.3 вместо каталога 1Cv82 используется 1Cv8.  

Но этот каталог можно изменить. Об этом чуть ниже.

Как включить ТЖ?
По умолчанию технологический журнал включен, и настроен на сохранение минимальных дампов. С помощью специального файла мы можем настроить ТЖ. А именно можем изменить каталоги ТЖ, указать какие события должны регистрироваться в ТЖ и тд.
Я говорю о файле настроек ТЖ logcfg.xml 
Этот файл должен находится в каталоге conf в папке с установленной 1с, например
«D:\Program Files\1Cv8\conf» 
Рассмотрим пример файла настроек для полного ТЖ.
config xmlns="http://v8.1c.ru/v8/tech-log">
    <log location="C:\Program Files\1cv82\logs" history="24">
        <event>
            <ne property="Name" value=""/>
        </event>
        <property name="all">
        </property>
    </log>
</config>

Этот конфигурационный файл определяет вывод в технологический журнал всех событий вместе со всеми свойствами. Журнал будет сохраняться в течение недели (24 часа). Однако объем выводимой информации при этом будет очень большим.
Целесообразней настроить ТЖ только на интересующие нас события, например мы хотим посмотреть есть были ли в системе ошибки и долгие операции (>10 секунд)

<config xmlns="http://v8.1c.ru/v8/tech-log">
    <log location="C:\Program Files\1cv82\logs" history="168">
        <event>
            <eq property="Name" value="PROC"/>
        </event>
        <event>
            <eq property="Name" value="SCOM"/>
        </event>
        <event>
            <eq property="Name" value="CONN"/>
        </event>
        <event>
            <eq property="Name" value="EXCP"/>
        </event>
        <event>
            <eq property="Name" value="ADMIN"/>
        </event>
        <event>
            <eq property="Name" value="QERR"/>
        </event>
        <event>
            <gt property="Duration" value="100000"/>
        </event>
        <property name="all">
        </property>
    </log>
</config>




Самые распространенные события ТЖ:
EXCP – исключительные ситуации приложений системы «1С:Предприятие», которые штатно не обрабатываются и могут послужить причиной̆ аварийного завершения серверного процесса или подсоединенного к нему клиентского процесса. 
EXCPCNTX – события, которые начались, но не закончились в момент возникновения нештатной̆ ситуации. 
DBMSSQL – исполнение операторов SQL СУБД Microsoft SQL Server. Для каждой СУБД используется свое событие (BPOSTGRS, DBORACLE, DB2, DBV8DBENG – файловый вариант) 
ADMIN – действия администратора кластера в консоли кластеров. 
PROC – события, относящиеся к процессу целиком и влияющие на дальнейшую работоспособность процесса. Например: старт, завершение, аварийное завершение и т. п. 
CALL – входящий удалённый вызов (удалённый вызов на стороне приемника вызова). Например, если вы из клиента вызываете функцию на сервере, то в ТЖ на сервере будет записано событие CALL.
SCALL – исходящий удалённый вызов (исходящий вызов на стороне источника вызова). Например, если вы из клиента вызываете функцию на сервере, то в ТЖ на клиенте будет записано событие SCALL.
SESN – действия, относящиеся к сеансу работы. Например: начало сеанса, окончание сеанса.  
TDEADLOCK – обнаружена взаимоблокировка в управляемом режиме блокировок.
TTIMEOUT – ошибка по таймауту на управляемых блокировках.
TLOCK – установка транзакционной блокировки в управляемом режиме блокировок.   

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

Между двумя работает логическое ИЛИ, т.е. при возникновении любого из событий оно будет записано в ТЖ. 
Внутри одного работает логическое И , т.е. данное событие будет записано только в том случае, если будут выполнены все условия внутри одного . 
При такой настройке событие EXCP будет записываться всегда, а событие DBMSSQL только в том случае, если в любом месте текста запроса содержится строка «AccRg105» и при этом запрос выполнялся дольше 3 секунд. Фильтр на длительность события, надо ставить в десятитысячных долях секунды независимо от версии платформы. В данном примере мы используем несколько условий: eq, gt и like. 
Можно использовать следующие условия:

  • eq – равно; 
  • ne – не равно;
  • gt – больше;
  • ge – больше или равно; 
  • lt – меньше; 
  • le – меньше или равно;
  • like – соответствие маске.  

В окончании добавлю еще пару примечаний:
Платформа раз в минуту считывает данные из файла настроек, поэтому не стоит горячится и сразу проверять файлы, только спокойствие все будет через минуточку)
Если Вы не собираетесь посылать в фирму 1с данные дампов, то не зачем их и хранить, в файле настроек не указывайте строку dump location.
Если Вы собираетесь хранить файлы ТЖ в каталоге отличном от каталога по умолчанию, то лучше предварительно создайте его сами.

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









Комментариев нет:

Отправить комментарий