Настройка технологического журнала logcfg.xml для анализа тяжелых запросов 1С
- Длительное проведение документов и зависание отчетов у пользователей кластера 1С.
- Высокая утилизация CPU/Disk I/O на стороне СУБД (MS SQL Server / PostgreSQL) при отсутствии явных дедлоков.
- Жалобы на ошибку «Превышено время ожидания предоставления блокировки».
- Необходимость локализации конкретной строки кода 1С, генерирующей неоптимальный SQL-запрос.
1. Создание и размещение файла logcfg.xml
Разместите конфигурационный файл технологического журнала в каталоге общих настроек платформы 1С:
- Windows:
C:\Program Files\1cv8\conf\logcfg.xml - Linux:
/opt/1cv8/x86_64/<версия_платформы>/conf/logcfg.xmlили/etc/1cv8/logcfg.xml
2. Шаблон logcfg.xml для перехвата запросов длительнее 1 секунды
<config xmlns="http://v8.1c.ru/v8/tech-log">
<dump create="false"/>
<log location="C:\1C_Logs\SlowQueries" history="72">
<event>
<eq property="name" value="DBMSSQL"/>
<ge property="duration" value="1000000"/>
</event>
<event>
<eq property="name" value="DBPOSTGRS"/>
<ge property="duration" value="1000000"/>
</event>
<event>
<eq property="name" value="SDBL"/>
<ge property="duration" value="1000000"/>
</event>
<property name="all"/>
</log>
</config>3. Настройка прав доступа
Учетная запись, под которой работает служба сервера 1С (usr1cv8 или локальная служба), должна обладать полными правами (Full Control) на каталог логирования (C:\1C_Logs\SlowQueries).
4. Анализ полученных логов
Используйте строковые парсеры (Grep, Ripgrep, ELK или 1C:Enterprise Log Tool) для поиска событий:
rg "duration=[0-9]{8,}" C:\1C_Logs\SlowQueriesОбратите внимание на свойства: Sql= (текст SQL запроса), Context= (модуль и строка кода 1С), Rows= (количество прочитанных строк).
Частые вопросы (FAQ)
В каких единицах измеряется свойство duration в logcfg.xml?
Свойство duration измеряется в микросекундах (1/1 000 000 секунды). Для порога в 1 секунду указывается значение 1000000, для 5 секунд — 5000000.
Нужно ли перезапускать службу сервера 1С после изменения logcfg.xml?
Нет, платформа перечитывает файл logcfg.xml динамически каждые 60 секунд. Перезапуск службы не требуется.
Как избежать переполнения диска при длительном сборе логов ТЖ?
Задайте параметр history (время хранения логов в часах, например history="48"), фильтруйте события по строгому порогу duration и сохраняйте логи на выделенный физический диск.
Чем отличаются события DBMSSQL/DBPOSTGRS от события SDBL?
DBMSSQL/DBPOSTGRS фиксируют фактический SQL-запрос, отправленный на сервер базы данных, а SDBL фиксирует запрос на внутреннем языке запросов платформы 1С до трансляции в SQL СУБД.