Как уменьшить объем папки srvinfo на сервере 1С:Предприятие

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

Проблема стремительного роста папки srvinfo знакома многим администраторам серверов «1С:Предприятие 8.3». Ситуация, когда каталог начинает поглощать по 0.5–1 Гб в сутки, может быстро привести к дефициту свободного места на диске и замедлению работы всей системы. В данной статье мы детально разберем, какие именно данные занимают место в srvinfo, почему стандартное сокращение журнала не всегда помогает и как эффективно очистить это пространство.

Определяем виновника: поиск проблемной базы

Прежде чем приступать к очистке, нам необходимо выяснить, какая именно информационная база (ИБ) генерирует такой объем данных. Структура srvinfo такова, что внутри папки reg_XXXX (где XXXX — порт кластера, например 1541) находятся подпапки с именами в формате GUID. Каждая такая папка соответствует определенной базе 1С.

Для идентификации базы проанализируем ситуацию по шагам:

  1. Используем утилиты для визуализации размера папок (например, WinDirStat или аналоги), чтобы найти самую «тяжелую» папку с GUID.
  2. Перейдем в файл ibases.v8i (он находится в профиле пользователя или в папке с настройками списка баз) и найдем там строку ID=название_вашей_папки. Рядом будет указано понятное имя базы.
  3. Выяснив, какая база растет, мы можем сосредоточиться на анализе ее настроек и логов.

Решение 1: Оптимизация журнала регистрации (SQLite и формат .lgd)

Начиная с версии 8.3, 1С по умолчанию использует новый формат журнала регистрации — единый файл 1Cv8.lgd, который по сути является базой данных SQLite. Особенность этой СУБД в том, что при удалении записей (сокращении журнала) физический размер файла на диске не уменьшается автоматически. Свободное место просто помечается как доступное для новых записей внутри файла.

Рассмотрим способы борьбы с разрастанием 1Cv8.lgd:

Метод «Vacuum» (сжатие файла базы данных)

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

  1. Остановим службу «Агент сервера 1С:Предприятие». Это критически важно, так как файл журнала будет заблокирован процессом rphost.
  2. Скачаем консольную утилиту sqlite3.exe.
  3. Выполним в командной строке следующую команду:

sqlite3.exe "C:\Path\To\Your\srvinfo\reg_1541\GUID\1Cv8.lgd" "VACUUM;"

После завершения операции размер файла должен существенно уменьшиться, если ранее в Конфигураторе производилось удаление старых записей.

Переход на старый формат журнала

Если новый формат вызывает постоянные трудности, можно вернуться к старому формату (набор файлов .elf). Разберем преимущества: старый формат разбивает журнал на части (по дням или месяцам), что позволяет просто удалять или архивировать старые файлы физически. Для перехода в конфигураторе выберем: Администрирование — Настройка журнала регистрации — Формат журнала.

Решение 2: Управление полнотекстовым поиском (ПП)

Второй по частоте причиной роста srvinfo является индекс полнотекстового поиска. Он хранится в подпапке index внутри папки с GUID базы. В крупных базах размер индекса может достигать сотен гигабайт.

Выясним, как оптимизировать этот объем:

  1. Очистка через интерфейс: В пользовательском режиме (1С:Предприятие) зайдем в «Обслуживание» или «Операции» — «Управление полнотекстовым поиском». Нажмем кнопку «Очистить индекс».
  2. Физическое удаление: Если стандартная очистка не помогает, остановим сервер 1С, перейдем в папку index проблемной базы и удалим ее содержимое. После запуска сервера и включения ПП индекс пересоберется заново, занимая минимально необходимый объем.
  3. Отключение индексации: Если пользователи не пользуются строкой поиска в списках, полнотекстовый поиск можно полностью отключить в настройках базы, что навсегда решит проблему роста этой папки.

Решение 3: Очистка временных данных и дампов

Посмотрим на другие «скрытые» папки, которые могут накапливать мусор:

Решение 4: Проверка технологического журнала

Проанализируем ситуацию, когда место съедается крайне быстро (гигабайты в час). Это верный признак включенного Технологического журнала (ТЖ). Проверим наличие файла конфигурации логов:

  1. Зайдем в папку bin\conf (в каталоге установки 1С).
  2. Поищем файл logcfg.xml.
  3. Если он существует, откроем его и посмотрим, куда записываются логи (путь в параметре location). Если папка логов находится внутри srvinfo, это и есть причина роста. Рекомендуется либо выключить ТЖ, либо настроить автоматическое удаление файлов логов старше 1-2 дней.

Рекомендация по миграции папки srvinfo

Если объем данных (особенно Журнала регистрации) объективно необходим для работы и его нельзя уменьшить, рассмотрим вариант переноса srvinfo на другой, более емкий диск (например, с SSD на HDD большой емкости). Рассмотрим, как изменить путь к данным сервера:

  1. Откроем редактор реестра или оснастку управления службами.
  2. Найдем службу 1C:Enterprise 8.3 Server Agent.
  3. В строке запуска службы найдем параметр -d "C:\Program Files\1cv8\srvinfo".
  4. Изменим этот путь на нужный, например: -d "D:\1C_Data\srvinfo".
  5. Перенесем все существующие данные из старой папки в новую и запустим службу.

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

Итоги и профилактика

Для предотвращения повторения проблемы мы рекомендуем:

  1. Настроить регулярное регламентное задание по сокращению журнала регистрации (например, раз в месяц).
  2. Если используется формат .lgd, настроить скрипт на языке 1С или Python, который будет останавливать сервер раз в неделю/месяц и выполнять VACUUM.
  3. Проверить регламентные задания в самой базе 1С. Часто избыточное логирование вызывают задания, запускающиеся каждую минуту и пишущие в ЖР статус «Успешно».

Пример кода для программного сокращения журнала (для запуска во внешнем скрипте):


КонецПериода = ТекущаяДата() - (60 * 60 * 24 * 30); // Удаляем записи старше 30 дней
УдалитьЗаписиЖурналаРегистрации(КонецПериода);

Следуя этим инструкциям, вы сможете держать объем серверных данных под контролем и обеспечить стабильную работу системы.

← На главную