Что делать, если сервер 1С занимает слишком много места на жестком диске?

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

Ситуация, когда сервер 1С:Предприятие внезапно «съедает» десятки и сотни гигабайт на системном диске или дорогостоящем SSD, является классической проблемой для системных администраторов. В данной статье мы подробно проанализируем причины такого поведения системы, выясним, какие именно файлы занимают место, и разберем пошаговые алгоритмы очистки и оптимизации дискового пространства.

Выясняем причину: куда уходит место?

Прежде чем приступать к удалению файлов, нам необходимо точно локализовать «виновника». Как правило, сам исполняемый код платформы занимает не более 1–2 Гб. Основной объем данных сервера 1С хранится в рабочем каталоге кластера. По умолчанию в Windows это путь: C:\Program Files\1cv8\srvinfo. Проанализируем структуру этого каталога. Внутри него находятся папки с именами типа reg_1541, а в них — подпапки с уникальными идентификаторами (GUID) каждой информационной базы.

Если мы заглянем внутрь папки конкретной базы, то увидим следующие критические пути:

  1. 1Cv8Log — это хранилище Журнала регистрации. Именно здесь чаще всего скапливаются те самые 70–100 Гб данных.
  2. 1Cv8FTxt — индексы полнотекстового поиска. Если в базе много текстовых данных и включен автоматический поиск, этот каталог может значительно разрастись.
  3. snacc — временные файлы сеансов пользователей.
  4. dumps — дампы памяти, которые создаются при аварийном завершении работы процессов rphost.

Разбираем работу с Журналом регистрации (1Cv8Log)

Журнал регистрации фиксирует каждое значимое действие пользователя или системы. Со временем он неизбежно увеличивается. Рассмотрим подробнее, как правильно «утихомирить» логи, не нарушив работу сервера.

Начиная с версии 8.3.5, 1С использует новый формат журнала — файлы с расширением .lgd. Это база данных формата SQLite. Основная сложность здесь заключается в том, что простое удаление записей внутри 1С не уменьшает физический размер файла на диске. SQLite помечает место как «пустое», но не отдает его операционной системе.

Способ 1: Сокращение журнала через Конфигуратор

Это штатный и наиболее безопасный метод. Выполним следующие действия вместе:

  1. Запустим нужную информационную базу в режиме Конфигуратор.
  2. Перейдем в меню Администрирование — Настройка журнала регистрации.
  3. Нажмем кнопку Сократить.
  4. Выберем дату, ранее которой события нам больше не нужны.
  5. Если мы хотим сохранить старые логи «на всякий случай», укажем имя файла в поле «Записать удаляемые события в файл». Если логи не нужны — оставляем поле пустым.
  6. Нажмем ОК и дождемся завершения процесса.

Важное замечание: Если после этой процедуры файл 1Cv8.lgd все еще занимает много места, нам потребуется выполнить операцию сжатия базы SQLite. Для этого при остановленной службе сервера 1С можно использовать стороннюю утилиту sqlite3.exe, выполнив команду:

vacuum;

Способ 2: Переход на старый формат журнала (.lgp)

Если вы хотите избежать проблем с «раздуванием» одного огромного файла, мы можем рассмотреть возврат к старому формату. В старом формате журнал хранится в виде множества мелких файлов, распределенных по периодам. Их гораздо проще удалять физически через проводник или скрипты.

Для смены формата в файле conf.cfg (лежит в папке bin/conf установки платформы) нужно добавить строку:

LogFormat=1

Однако помните, что новый формат (SQLite) работает быстрее при больших объемах данных и позволяет строить более сложные отчеты по событиям.

Оптимизация полнотекстового поиска (1Cv8FTxt)

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

  1. В режиме «Предприятие» перейдем в раздел Администрирование — Поддержка и обслуживание — Управление полнотекстовым поиском.
  2. Мы можем полностью отключить полнотекстовый поиск, сняв соответствующую галочку.
  3. Если поиск нужен, мы можем нажать Очистить индекс, а затем Обновить индекс. Это пересоберет файлы и удалит лишний «мусор».

Влияние режима отладки (Debug)

Как было замечено в исходном обсуждении, на сервере включен режим дебага. Выясним, как это влияет на место. Режим отладки (параметр -debug в строке запуска службы) сам по себе не пишет логи гигабайтами, но он заставляет сервер генерировать больше временных данных и дампов при ошибках. Если вы не ведете активную разработку на «проде», настоятельно рекомендуем выключить этот режим. Это снизит нагрузку на дисковую подсистему и предотвратит появление лишних временных файлов.

Перенос каталога srvinfo на другой диск

Если ваш SSD под систему совсем мал, а логи базы критически важны для аудита, лучшим решением будет перенос рабочего каталога на более емкий HDD. Рассмотрим, как изменить путь к srvinfo в Windows:

  1. Остановим службу 1C:Enterprise 8.3 Server Agent.
  2. Откроем редактор реестра (regedit).
  3. Перейдем в ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64).
  4. Найдем параметр ImagePath.
  5. В строке запуска мы увидим флаг -d "C:\Program Files\1cv8\srvinfo". Изменим этот путь на нужный нам, например: -d "D:\1C_Data\srvinfo".
  6. Важно: Физически скопируем все содержимое старой папки srvinfo в новое место, сохранив права доступа для пользователя, от имени которого запускается служба 1С (обычно это USR1CV8).
  7. Запустим службу.

Автоматизация очистки

Чтобы не заниматься «ручной резкой» журналов каждые полгода, проанализируем возможности современных версий платформы (8.3.18+). Теперь в настройках базы в консоли администрирования или через встроенный язык можно настроить автоматическое удаление записей журнала регистрации старше определенного количества дней. Для освобождения диска сервера с сохранением истории событий во внешней аналитической СУБД можно использовать комплект скриптов для выгрузки журнала регистрации в Clickhouse.

Пример кода для программной настройки сокращения (выполняется в контексте сервера):


Настройка = ЖурналРегистрации.ПолучитьНастройкиПредельногоРазмера();
Настройка.ИспользоватьПредельныйРазмер = Истина;
Настройка.ПредельныйРазмер = 5000; // Размер в Мб
ЖурналРегистрации.УстановитьНастройкиПредельногоРазмера(Настройка);

Заключение

Мы выяснили, что основная причина «отжирания» места сервером 1С — это бесконтрольный рост Журнала регистрации. Регулярное обслуживание через Конфигуратор, использование операции VACUUM для SQLite, очистка индекса полнотекстового поиска и перенос рабочих файлов на отдельный диск позволяют держать ситуацию под контролем. Не забывайте также проверять папку с дампами и временными файлами, так как при нестабильной работе сервера они могут стать неприятным сюрпризом для свободного места на диске.

← На главную