К статье
Практический материал

Администрирование · 11 мин

Технологический анализ в 1С 8: что это и как его провести

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

Технологический анализ в 1С 8 — это комплекс действий по диагностике работы информационной базы: сбору и разбору технологического журнала, замерам производительности, анализу запросов к СУБД, блокировок и ошибок платформы. Его цель — найти конкретные причины медленной работы, зависаний, взаимоблокировок и аварийных завершений, а не гадать, «кто виноват»: сервер, сеть, код или пользователи.

Термин не является официальным названием отдельного механизма платформы. На практике под технологическим анализом понимают работу с инструментами, которые 1С предоставляет «из коробки»: технологический журнал (ТЖ), консоль запросов и план запроса, замеры производительности в конфигураторе, счётчики нагрузки кластера, а также средства СУБД — планы выполнения, статистика ожиданий, мониторинг блокировок.

К такому анализу прибегают, когда пользователи жалуются на «тормоза», проведение документов занимает минуты вместо секунд, периодически возникают взаимоблокировки или база «падает» без видимой причины. Правильно проведённый анализ даёт воспроизводимую картину: какой запрос, на каком объекте метаданных, под какой нагрузкой создаёт проблему.

Из чего состоит технологический анализ

Анализ строится вокруг нескольких источников данных. Первый — технологический журнал: текстовые логи, в которые платформа пишет события по заданным фильтрам (вызовы СУБД, исключения, блокировки, длительные операции). Второй — замеры производительности в конфигураторе, которые показывают, сколько времени занимает каждая строка кода. Третий — инструменты СУБД: планы запросов, динамические представления MS SQL Server или pg_stat-таблицы PostgreSQL.

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

Когда технологический анализ действительно нужен

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

Если проблема разовая и объяснима (например, одновременно запустили свёртку базы и перепроведение), достаточно точечного замера. Но если «тормозит всё и у всех» неделями — без технологического журнала и анализа планов запросов причину почти никогда не находят: интуитивные догадки в таких ситуациях ошибаются чаще, чем попадают.

Маршрут решения

Как выбрать действие

Медленно работает одна конкретная операция у всех пользователейНачните с замера производительности и плана запроса — ТЖ можно не включать
Проблема плавающая, возникает в часы нагрузкиНастройте ТЖ на события DBMSSQL/DBPOSTGRS с длительностью, TLOCK и TDEADLOCK
Падают сеансы или рабочие процессыВключите в ТЖ события EXCP и проверьте журнал регистрации и логи кластера
Тормозит только у части пользователейПроверяйте сеть и клиентские места, а не сервер: ТЖ здесь вторичен

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

Технологический журнал включается файлом logcfg.xml, который размещают в каталоге conf сервера 1С (или в каталоге conf рядом с исполняемыми файлами конкретной версии платформы). В файле задаётся каталог логов и список событий с условиями. Платформа начинает писать логи в течение минуты после появления корректного файла — перезапуск служб не требуется.

Типовой минимальный набор для диагностики производительности: события DBMSSQL (или DBPOSTGRS для PostgreSQL) с порогом длительности, EXCP для исключений, TLOCK, TTIMEOUT и TDEADLOCK для блокировок. Порог длительности задаётся в микросекундах: значение 1000000 соответствует одной секунде — события быстрее порога в журнал не попадут.

xml
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1c_logs" history="24">
    <event><eq property="name" value="DBMSSQL"/></event>
    <event><eq property="name" value="EXCP"/></event>
    <event><eq property="name" value="TDEADLOCK"/></event>
    <property name="all"/>
  </log>
</config>

Ограничивайте объём записи: параметр history задаёт время хранения логов в часах, без него каталог будет расти до заполнения диска. Для первичной диагностики достаточно 24–72 часов записи, захватывающих периоды пиковой нагрузки.

Разбор результатов: что искать в логах

Логи ТЖ пишутся в файлы формата .log, разбитые по часам и процессам (rphost, ragent, rmngr). Читать их вручную тяжело, поэтому применяют специализированные инструменты разбора или хотя бы поиск по ключевым словам: Duration, TDEADLOCK, EXCP.

Для событий запросов к СУБД ключевые поля — длительность (Duration), текст запроса (Sql) и контекст (Context — какой код конфигурации инициировал запрос). Если один и тот же запрос всплывает многократно с большой длительностью — это кандидат на оптимизацию: индекс, переписывание запроса, изменение логики кода.

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

Контрольные точки

Как проверить результат

Логи создаются
Норма

В каталоге появились подкаталоги с файлами .log в течение 1–2 минут после размещения logcfg.xml

Тревожный признак

Каталог пуст: проверьте путь, права доступа службы агента и синтаксис XML

События фильтруются
Норма

В логах только нужные типы событий, объём растёт умеренно

Тревожный признак

Логи растут на гигабайты в час — фильтры не сработали

Запрос оптимизирован
Норма

Длительность события заметно снизилась при повторном замере под той же нагрузкой

Тревожный признак

Длительность не изменилась или проблема переехала в другое место

Замеры производительности и анализ запросов

Замер производительности запускается из конфигуратора: Отладка → Замер производительности. После воспроизведения проблемной операции платформа показывает таблицу: сколько раз вызывалась каждая строка кода и сколько времени она заняла суммарно и чистыми. Это самый быстрый способ отделить «медленный запрос» от «медленного цикла в коде».

Частая находка на замерах — запросы в цикле: код обходит табличную часть и на каждую строку выполняет запрос. Платформа честно покажет тысячи вызовов одной строки. Решение — собрать данные одним запросом с временной таблицей. Вторая типовая находка — обращения к СУБД, которые занимают 90% времени операции: тогда дальше смотрят план запроса средствами СУБД.

Порядок действий при жалобах на медленную работу
  1. 1
    Зафиксируйте симптом: какая операция, у кого, в какое время, сколько длится
  2. 2
    Проверьте загрузку сервера СУБД и кластера 1С в момент проблемы
  3. 3
    Сделайте замер производительности на воспроизводимой операции
  4. 4
    Если проблема плавающая — включите ТЖ с фильтрами на длительные запросы и блокировки
  5. 5
    Найдите запрос или участок кода с максимальной длительностью
  6. 6
    Проанализируйте план запроса: сканирования вместо поиска по индексу, нехватка индексов
  7. 7
    Внесите точечное исправление и повторите замер под сопоставимой нагрузкой

Типичные ошибки при проведении анализа

Главная ошибка — начинать оптимизацию до диагностики: пересоздавать индексы, обновлять платформу, менять настройки СУБД «на всякий случай». Без зафиксированной исходной точки невозможно понять, помогло ли изменение, а параллельные правки смешивают эффекты.

Вторая ошибка — анализировать логи вне контекста нагрузки. Запрос, который выполняется 2 секунды ночью и 30 секунд днём при полной загрузке — это проблема конкуренции за ресурсы, а не самого запроса. Третья — забыть выключить ТЖ после диагностики: логи продолжают расти и однажды заполнят диск, что приведёт уже к настоящему отказу.

Типичные ошибки
01
Включение ТЖ без фильтров и лимита хранения — переполнение диска и дополнительная нагрузка
02
Оптимизация без исходного замера — невозможно доказать эффект и откатить изменение
03
Поиск причины только в коде, когда проблема в статистике СУБД или дисковой подсистеме
04
Анализ разового события вместо повторяющейся картины — выводы по шуму
05
Одновременное внесение нескольких исправлений — непонятно, что именно помогло

Ограничения и когда привлекать специалистов

Базовый цикл — включить ТЖ, сделать замер, найти длительный запрос — доступен администратору с опытом работы с платформой. Но есть границы: тонкая настройка СУБД (изменение уровней изоляции, перестройка индексной стратегии на больших базах), анализ дампов аварийных завершений, оптимизация кода типовых конфигураций с учётом обновлений требуют профильного опыта.

Рискованные действия, которые не стоит выполнять на рабочей базе без резервной копии и плана отката: массовое пересоздание индексов, изменение схемы данных, правка запросов в типовых модулях, смена настроек СУБД. Любое изменение проверяйте сначала на копии базы с сопоставимым объёмом данных — на тестовой базе в 100 МБ проблема боевой базы в 200 ГБ просто не воспроизведётся.

Итог

Что важно запомнить

Технологический анализ в 1С 8 — это диагностика через технологический журнал, замеры производительности и планы запросов. Порядок всегда один: зафиксировать симптом, собрать данные с фильтрами, найти конкретный запрос или участок кода, исправить точечно и проверить замером. Диагностика до изменений, а не после.

Частые вопросы

Чем технологический журнал отличается от журнала регистрации?

Журнал регистрации фиксирует прикладные события: кто вошёл, какой документ изменил, какие ошибки возникли на уровне логики. Технологический журнал пишет низкоуровневые события платформы: тексты запросов к СУБД, длительность, блокировки, исключения с дампами. Для анализа производительности нужен именно ТЖ, журнал регистрации полезен как контекст — кто и что делал в момент проблемы.

Нужно ли перезапускать сервер 1С после создания logcfg.xml?

Нет. Платформа периодически проверяет наличие файла конфигурации и начинает запись логов в течение примерно минуты. Если логи не появились, проверяйте расположение файла, права доступа учётной записи службы агента к каталогу логов и корректность XML — ошибка синтаксиса молча отключает запись.

Замедляет ли технологический журнал работу системы?

При разумных фильтрах влияние небольшое: запись идёт только по выбранным событиям. Заметная нагрузка возникает при записи всех событий без порогов длительности на загруженном сервере или при размещении логов на медленном диске. Поэтому фильтры, лимит истории и отдельный диск для логов — обязательный минимум.

Можно ли провести технологический анализ в файловой базе?

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

Что делать, если взаимоблокировки повторяются после оптимизации запросов?

Ускорение запросов сокращает окно конфликта, но не устраняет причину, если транзакции блокируют ресурсы в разном порядке. Нужен анализ кода проведения конкурирующих документов: унификация порядка записи данных, сокращение транзакций, управляемые блокировки на критичных участках. Иногда помогает включение версионирования на уровне СУБД, но это решение требует тестирования на копии.

Как понять, что проблема в сервере, а не в конфигурации?

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