Как выполнить сокращение файла журнала регистрации 1С в формате SQLite (lgd) и оптимизировать его производительность?

Системный администратор 1С v8.3 (Управляемые формы)
← На главную

При работе с платформой 1С:Предприятие 8.3 пользователи и системные администраторы часто сталкиваются с проблемами производительности, связанными с журналом регистрации, который по умолчанию может храниться в формате SQLite (файл .lgd). Этот файл может значительно разрастаться, вызывая замедление работы системы и блокировки со стороны различных процессов, таких как rmngr.exe. В данной статье мы подробно рассмотрим, как выполнить сокращение (vacuum) такого файла, а также предложим более эффективные подходы к управлению журналом регистрации для повышения общей производительности системы.

Понимание служб 1С:Предприятия и блокирующих процессов

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

  1. Службы Агента сервера 1С:Предприятие: На сервере могут быть установлены две службы, связанные с Агентом сервера 1С:Предприятие 8.3:

    Эти службы представляют собой различные версии агента сервера 1С (32-битную и 64-битную соответственно). Хотя они могут работать на одной 64-битной операционной системе, обслуживая разные версии платформы 1С или информационные базы, они не являются полностью независимыми в контексте доступа к файлам сервера. Для обеспечения монопольного доступа к файлам сервера 1С (включая файл .lgd) перед выполнением любых операций по обслуживанию мы настоятельно рекомендуем остановить обе службы.

  2. Процесс rmngr.exe: Вы также можете заметить, что файл .lgd оказывается занятым не службами Агента, а процессом rmngr.exe (менеджером кластера серверов 1С:Предприятия). Этот процесс активно работает с журналом регистрации, особенно в высоконагруженных системах. Интенсивное чтение журнала регистраций со стороны rmngr.exe часто приводит к блокировкам файла .lgd, росту нагрузки на процессор и общим замедлениям. Таким образом, помимо останова служб Агента, необходимо также убедиться, что процесс rmngr.exe не удерживает файл. После останова служб Агента, rmngr.exe также должен завершить свою работу.

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

Прямое сокращение файла журнала регистрации (vacuum) в SQLite

Если вы все же решили использовать формат SQLite для журнала регистрации и хотите сократить его размер, вы можете выполнить операцию vacuum. Эта операция перестраивает базу данных, очищая неиспользуемое пространство и уменьшая размер файла. Разберем шаги по выполнению этой операции.

  1. Остановите службы 1С: Как мы уже выяснили, для монопольного доступа к файлу .lgd необходимо остановить обе службы Агент сервера 1С:Предприятие 8.3 и Агент сервера 1С:Предприятие 8.3 (x86-64). Убедитесь, что после этого процесс rmngr.exe также завершил свою работу.
  2. Найдите утилиту sqlite3.exe: Для выполнения операции vacuum вам понадобится консольная утилита sqlite3.exe. Ее можно скачать с официального сайта SQLite или найти в составе некоторых программных продуктов, использующих SQLite.
  3. Выполните команду vacuum: Откройте командную строку с правами администратора и перейдите в каталог, где находится утилита sqlite3.exe. Затем выполните следующую команду, указав полный путь к вашему файлу 1Cv8.lgd:
  4. sqlite3.exe C:\<путь_к_файлу>\1Cv8.lgd vacuum

    Замените C:\<путь_к_файлу>\1Cv8.lgd на фактический путь к вашему файлу журнала регистрации. Процесс vacuum может занять некоторое время в зависимости от размера файла .lgd.

  5. Использование сторонних инструментов: Также существуют графические утилиты, такие как DB Browser for SQLite, которые предоставляют удобный интерфейс для управления базами данных SQLite, включая функцию сжатия (vacuum).
  6. Запустите службы 1С: После успешного выполнения операции vacuum вы можете запустить ранее остановленные службы 1С:Предприятия.

Переход на "православный" способ хранения ЖР или его полное отключение

Несмотря на возможность ручного сокращения файла .lgd, фирма "1С" и опыт многих пользователей показывают, что формат SQLite для журнала регистрации в высоконагруженных системах является менее производительным по сравнению с традиционным файловым форматом. В контексте 1С "православный" способ хранения журнала регистрации обычно подразумевает переход на файловый формат (файлы .lgf и .lgp) или использование внешней СУБД (например, PostgreSQL или MS SQL Server) для его хранения. Рассмотрим подробнее переход на файловый формат, который является наиболее частой рекомендацией.

1. Переход на файловый формат журнала регистрации (.lgf и .lgp)

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

  1. Остановите службы 1С: Как и в предыдущем случае, для обеспечения монопольного доступа к файлам информационной базы и журнала регистрации необходимо остановить обе службы Агент сервера 1С:Предприятие 8.3 и Агент сервера 1С:Предприятие 8.3 (x86-64).
  2. Найдите папку журнала регистрации: Журнал регистрации хранится в каталоге информационной базы. Обычно это папка 1Cv8Log, расположенная внутри каталога конкретной информационной базы.
  3. Удалите или переместите файлы .lgd: Внутри папки 1Cv8Log найдите все файлы с расширением .lgd. Рекомендуется не удалять их сразу, а переместить в другое место (например, в подпапку "Backup") для резервной копии, на случай, если информация из старого журнала потребуется. Если же информация из старого журнала не нужна, вы можете их просто удалить.
  4. Создайте пустой файл 1Cv8.lgf: В той же папке 1Cv8Log создайте пустой файл с именем 1Cv8.lgf. Для этого можно создать любой текстовый файл, а затем переименовать его, убедившись, что расширение .txt не осталось (т.е. файл должен называться ровно 1Cv8.lgf). Наличие этого пустого файла указывает платформе 1С, что следует использовать старый файловый формат.
  5. Запустите службы 1С: После выполнения всех этих действий запустите остановленные службы Агента сервера 1С:Предприятия. Платформа обнаружит файл 1Cv8.lgf и начнет создавать журнал регистрации в файловом формате (.lgf и .lgp).

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

2. Полное отключение регистрации событий

Если информация из журнала регистрации для конкретной базы вообще не нужна, вы можете полностью отключить регистрацию всех событий. Это значительно уменьшит нагрузку на систему, так как 1С перестанет записывать события.

  1. Остановите службы 1С: Снова убедитесь, что службы Агента сервера 1С остановлены, чтобы избежать конфликтов при доступе к файлам.
  2. Очистите существующий журнал (опционально): Если вам не нужна история, вы можете удалить все файлы .lgd, .lgf и .lgp из папки 1Cv8Log.
  3. Отключите регистрацию событий через администрирование 1С:
    • Запустите 1С:Предприятие (если это возможно без конфликтов, или после запуска служб, но перед доступом к базе, если вы удалили файлы ЖР).
    • Перейдите в режим "Конфигуратор" или "Администрирование" (в зависимости от конфигурации и версии платформы).
    • В разделе, отвечающем за администрирование информационной базы (часто это "Администрирование" -> "Общие настройки" или подобные), найдите опции управления журналом регистрации.
    • Снимите флажок или выберите опцию "Не регистрировать" для всех событий. Возможно, потребуется настроить состав регистрируемых событий, установив минимальный уровень регистрации или полностью отключив его.
  4. Запустите службы 1С: После настройки запустите службы Агента сервера 1С. Система больше не будет записывать события в журнал регистрации.

Почему журнал регистрации на SQLite в 1С менее производителен?

Многие пользователи и даже разработчики 1С задаются вопросом, почему такая быстрая встраиваемая СУБД, как SQLite, демонстрирует низкую производительность в качестве журнала регистрации 1С. Рассмотрим основные причины:

  1. Избыточная блокировка: Основная причина кроется в специфике реализации работы с SQLite в 1С. В многопользовательских и высоконагруженных системах возникают избыточные блокировки при операциях чтения и записи в файл .lgd. Это приводит к так называемым "зависаниям" и замедлению работы пользователей, ожидающих освобождения ресурса.
  2. Интенсивное чтение со стороны rmngr.exe: Процесс rmngr.exe (менеджер кластера серверов 1С) постоянно и интенсивно читает журнал регистрации, что в условиях SQLite приводит к высокой нагрузке на процессор и усугубляет проблему блокировок.
  3. Рекомендации 1С: Фирма "1С" сама признала, что начиная с определенных версий (особенно с 8.3.12 и более поздних, вплоть до 8.3.22) старый файловый формат журнала регистрации (.lgf/.lgp) является более производительным для высоконагруженных систем по сравнению с SQLite (.lgd). Именно поэтому по умолчанию в более свежих версиях платформы используется последовательный файловый формат.

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

← На главную