Mazmunga o'tish
Tez Base

Журнал регистрации 1С разросся и тормозит: полумеры, которые помогут, и решение, которое работает

· Chop etilgan: · Yangilangan:

Мониторинг и журналы

Знакомая картина: папка 1Cv8Log занимает сотни гигабайт, журнал регистрации из конфигуратора открывается минутами, любой отбор по пользователю превращает ожидание в лотерею, а когда инцидент наконец случился - выясняется, что история за нужную дату уже затёрта. Журнал вроде бы есть, “вроде бы ведётся” - но в момент, когда он нужен, пользоваться им нельзя.

Сразу разведём термины: речь о журнале регистрации - файлах платформы с историей действий пользователей. Если у вас растёт журнал транзакций SQL Server (файл .ldf) - это другая болезнь, её разбор в отдельной статье.

Разберём по шагам: почему так происходит, что реально дают штатные способы борьбы, где их предел - и как выглядит решение, когда база пишет десятки миллионов событий в сутки.

Почему штатный журнал умирает на нагрузке

Журнал регистрации хранится в файлах .lgp (+ словарь .lgf) в каталоге 1Cv8Log каждой рабочей базы. Формат последовательный: платформа дописывает события в конец файла. Для чтения с отбором это худший из вариантов - чтобы найти “все ошибки за вчера”, просмотрщику нужно пройти файл насквозь. Пока журнал весит мегабайты, это незаметно. Дальше арифметика беспощадна:

  • Средняя торговая база на пару сотен активных пользователей и развитыми регламентными заданиями легко пишет десятки миллионов событий в сутки (у нагруженных - за сотню миллионов: на одном нашем внедрении - 150-194 млн в день, и это не предел).
  • Каждое событие - сотни байт. Десятки миллионов событий = гигабайты прироста в день на дисках боевого сервера.
  • Просмотр “за последнюю неделю” на таком объёме - это чтение десятков гигабайт последовательного формата. Отсюда зависания, таймауты и знаменитое “журнал не открывается вообще”.

Важно понимать: это не баг и не “кривая настройка”. Формат ЖР спроектирован для дешёвой записи, а не для аналитики. На малых объёмах компромисс невидим, на больших - фатален.

Штатные полумеры: что дают и где предел

1. Сокращение журнала регистрации

Штатная операция (Администрирование → Сокращение журнала регистрации) удаляет события старше даты, при желании - с выгрузкой в архивный файл. Плюс: место освобождается, просмотр ускоряется. Минусы принципиальные: история исчезает (архивный .elf-файл для расследований малопригоден - его нужно загружать обратно), а на больших журналах сама операция сокращения идёт часами и грузит сервер. Это гигиена, а не решение: вы просто регулярно отрезаете себе память.

2. Периодичность разделения файлов

Платформа умеет резать журнал на файлы по периодам (день/неделя/месяц). Обязательная настройка для нагруженной базы: маленькие файлы быстрее читаются за “свой” период и проще обслуживаются. Но глобально это ничего не меняет - суммарный объём тот же, поиск по длинному периоду всё так же читает всё.

3. Отбор регистрируемых событий

Можно отключить регистрацию части событий (например, “Примечания”) или снизить детальность. Работает, пока вы режете действительно лишнее. Дальше начинается торговля с самим собой: каждое отключённое событие - дыра в будущем расследовании. Классический сценарий: отключили регистрацию чтения данных ради места - через полгода безопасность спрашивает, кто открывал документ с зарплатами, а ответа нет. Урезать аудит ради производительности - почти всегда ошибка, которая проявится в самый дорогой момент.

4. “Перевести в SQLite” (старый формат .lgd)

В некоторых версиях платформы журнал можно вести в формате SQLite-базы. На средних объёмах отборы работают лучше, но на настоящей нагрузке появляются свои проблемы (блокировки при интенсивной записи, разрастание одного файла), и 1С сама вернула последовательный формат по умолчанию. На потоке в десятки миллионов событий в сутки это не спасение.

Итого: штатными средствами можно отсрочить проблему - настроить периодичность, аккуратно выбрать события, регулярно сокращать. Но фундаментальный конфликт “формат для записи против запросов на чтение” никуда не денется. Если журнал нужен вам как рабочий инструмент - читать, искать, анализировать - данные надо уносить туда, где чтение стоит дёшево.

Решение: журнал уезжает во внешнее хранилище

Идея проста: боевой сервер продолжает писать журнал как писал, а рядом работает служба-экспортёр, которая в реальном времени читает файлы ЖР “хвостом” (как tail -f) и отправляет события во внешнюю аналитическую СУБД. Штатные файлы после подтверждённой выгрузки автоматически удаляются - диски боевого сервера перестают расти.

Вариантов хранилища несколько (Elasticsearch, PostgreSQL, ClickHouse); для логовых нагрузок лучше всего подходит ClickHouse - колоночная СУБД, созданная ровно под такой профиль: массовая вставка, редкие точечные обновления, быстрые агрегаты. Экспортёры под неё есть открытые (мы используем OneSTools.EventLog - без лицензионных затрат).

Что это даёт на практике - цифры с нашего внедрения, где конвейер работает в промышленной эксплуатации больше двух лет:

Штатный ЖРЖР в ClickHouse
Поиск ошибок за суткиминуты, часто зависает0,11 секунды
Глубина истории онлайндни-недели7+ месяцев
Место~3 ТБ на боевых серверах440 ГБ на отдельном (сжатие 6,7-9,2×)
Аналитика по всей историиневозможна~1 минута на 30 млрд строк
Задержка появления события-секунды

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

И самый недооценённый эффект - поведенческий. Когда ошибки перестают тонуть в нечитаемых файлах и начинают считаться и трендиться, их начинают чинить: на том же внедрении число ошибок в проде за полгода снизилось в 23 раза. Полная история этого проекта с архитектурой и всеми цифрами - в кейсе “Журнал регистрации в ClickHouse: 35 млрд событий”.

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

Можно ли просто отключить журнал регистрации?

Технически - да, практически - не надо. Журнал - единственный источник ответов на “кто изменил”, “почему упало”, “что происходило перед сбоем”. Его отсутствие всплывает в худший момент: при инциденте, споре с контрагентом или проверке безопасности. Правильный вопрос не “как отключить”, а “как сделать, чтобы он не мешал и работал”.

Сокращение журнала регистрации - это безопасно?

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

Файлы .lgp можно просто удалить руками?

Файлы закрытых периодов (при настроенной периодичности) - можно, платформа переживёт: вы потеряете только историю этих периодов. Текущий файл трогать нельзя. Но “удалить руками” - это то же сокращение, только без контроля; если приходится делать это регулярно - у вас как раз тот случай, когда журнал пора уносить из файлов.

У нас не миллионы событий в сутки. Нам это нужно?

Если журнал открывается быстро, истории хватает и вопросов “кто это сделал” не возникает - нет, достаточно настроить периодичность и регулярное сокращение с архивом. Задумываться о выносе стоит, когда просмотр начал мешать работе или когда бизнесу нужна история глубже, чем влезает на диск. Порог обычно где-то на единицах миллионов событий в сутки.

Насколько это дорого?

Стек полностью открытый: ClickHouse + открытый экспортёр + обработки 1С, лицензионных платежей ноль. Из железа - один сервер (можно виртуальный) под хранилище: за счёт сжатия в 7-9 раз ему нужно на порядок меньше диска, чем занимали бы сырые журналы. Основные трудозатраты - первичная настройка конвейера, мониторинга его живости и интерфейсной обработки. Эту часть мы закрываем услугой журнал регистрации 1С в ClickHouse - стек остаётся у вас со всей документацией, без абонентской привязки к нам.

Итог

Разросшийся журнал регистрации - не повод его резать и тем более отключать. Штатные средства (периодичность, аккуратный состав событий, регулярное сокращение) - обязательная гигиена, но они лишь оттягивают момент, когда журнал перестанет быть инструментом. Настоящее решение - разделить запись и чтение: боевой сервер пишет, внешнее колоночное хранилище отвечает на вопросы. Тогда журнал из балласта превращается в источник метрик качества системы.

Технический разбор нашего конвейера - со схемой хранения, форматом таблиц и цифрами с боевого сервера - опубликован на Инфостарте: “Журнал регистрации 1С на 35 миллиардов событий: как заставить его открываться за 0,11 секунды”.

Мы разворачиваем такой конвейер под ключ: услуга журнал регистрации 1С в ClickHouse - от экспортёра и хранилища до Telegram-алертов и привычной формы журнала для пользователей. Если нужны ещё и метрики серверов с СУБД, это соседняя услуга мониторинга 1С. Оценить своё положение можно с бесплатного экспресс-аудита: посмотрим на объёмы вашего журнала и честно скажем, хватит ли вам штатной гигиены или пора выносить.

Когда нужен разовый ответ по журналу

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

Журнал регистрации разросся и тормозит поиск

Разгрузим журнал, настроим хранение и оставим то, по чему у вас реально ищут

Narxi
450 000 ₸ dantoʻliq joriy etish; soliqlarsiz
Muddati
2-4 дня

Yozishga erta? O'zingiz o'lchang

Чек-ап СУБД под 1С: 40+ проверок с вердиктом по каждой

Ishlov berishni ochish

INFOSTART TECH EVENT 2026: конференция для 1с-специалистов. если собираетесь, регистрируйтесь по нашей ссылке. Регистрация →

Buni ham o'qing

1С висела, серверы перезагрузили: какие следы аварии остались и сколько они живут

После перезагрузки SQL Server и кластера 1С большая часть улик пропадает сразу, остальная через дни. Разбираем по источникам, что где хранится и когда стирается, что успеть сохранить за две минуты до рестарта, как по журналу регистрации доказать, что беда общая для всех баз, как читать события vCenter голым SOAP и что поставить заранее, чтобы следующую аварию было по чему разбирать. Иллюстрация - зависание касс в рознице, где через три недели назвать виновника было уже нечем.

Prometheus не принимает метрики кластера 1С: диагностика по симптомам

Справочник по поломкам экспортера метрик кластера 1С: цель down с ошибкой invalid metric type, отказ RAS из-за разных версий, служба RAS, которая перестала стартовать после обновления платформы, пустые панели лицензий на тестовом кластере и ловушки разбора вывода rac. Для каждой поломки команда проверки и починка, в конце список проверок до выпуска.

Ночная загрузка данных упала без видимой ошибки: как узнать об этом в первую же ночь

Одно значение не влезло в числовую колонку, и вся ночная пачка откатилась. Отчёты открываются, цифры вчерашние, алерта нет. Разбираем по вопросам: откуда ноль строк, как найти брак, чем платите за обрезку и расширение типа, какой счётчик ловит аварию сразу и как найти узкие числовые реквизиты в своей 1С.