Ситуация, когда сервер 1С:Предприятие внезапно «съедает» десятки и сотни гигабайт на системном диске или дорогостоящем SSD, является классической проблемой для системных администраторов. В данной статье мы подробно проанализируем причины такого поведения системы, выясним, какие именно файлы занимают место, и разберем пошаговые алгоритмы очистки и оптимизации дискового пространства.
Прежде чем приступать к удалению файлов, нам необходимо точно локализовать «виновника». Как правило, сам исполняемый код платформы занимает не более 1–2 Гб. Основной объем данных сервера 1С хранится в рабочем каталоге кластера. По умолчанию в Windows это путь: C:\Program Files\1cv8\srvinfo. Проанализируем структуру этого каталога. Внутри него находятся папки с именами типа reg_1541, а в них — подпапки с уникальными идентификаторами (GUID) каждой информационной базы.
Если мы заглянем внутрь папки конкретной базы, то увидим следующие критические пути:
rphost.Журнал регистрации фиксирует каждое значимое действие пользователя или системы. Со временем он неизбежно увеличивается. Рассмотрим подробнее, как правильно «утихомирить» логи, не нарушив работу сервера.
Начиная с версии 8.3.5, 1С использует новый формат журнала — файлы с расширением .lgd. Это база данных формата SQLite. Основная сложность здесь заключается в том, что простое удаление записей внутри 1С не уменьшает физический размер файла на диске. SQLite помечает место как «пустое», но не отдает его операционной системе.
Это штатный и наиболее безопасный метод. Выполним следующие действия вместе:
Важное замечание: Если после этой процедуры файл 1Cv8.lgd все еще занимает много места, нам потребуется выполнить операцию сжатия базы SQLite. Для этого при остановленной службе сервера 1С можно использовать стороннюю утилиту sqlite3.exe, выполнив команду:
vacuum;
Если вы хотите избежать проблем с «раздуванием» одного огромного файла, мы можем рассмотреть возврат к старому формату. В старом формате журнал хранится в виде множества мелких файлов, распределенных по периодам. Их гораздо проще удалять физически через проводник или скрипты.
Для смены формата в файле conf.cfg (лежит в папке bin/conf установки платформы) нужно добавить строку:
LogFormat=1
Однако помните, что новый формат (SQLite) работает быстрее при больших объемах данных и позволяет строить более сложные отчеты по событиям.
Проанализируем папку 1Cv8FTxt. Если она занимает десятки гигабайт, а ваши пользователи редко пользуются глобальным поиском, эти данные можно очистить. Разберем, как это сделать программно или через интерфейс:
Как было замечено в исходном обсуждении, на сервере включен режим дебага. Выясним, как это влияет на место. Режим отладки (параметр -debug в строке запуска службы) сам по себе не пишет логи гигабайтами, но он заставляет сервер генерировать больше временных данных и дампов при ошибках. Если вы не ведете активную разработку на «проде», настоятельно рекомендуем выключить этот режим. Это снизит нагрузку на дисковую подсистему и предотвратит появление лишних временных файлов.
Если ваш SSD под систему совсем мал, а логи базы критически важны для аудита, лучшим решением будет перенос рабочего каталога на более емкий HDD. Рассмотрим, как изменить путь к srvinfo в Windows:
regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64).ImagePath.-d "C:\Program Files\1cv8\srvinfo". Изменим этот путь на нужный нам, например: -d "D:\1C_Data\srvinfo".srvinfo в новое место, сохранив права доступа для пользователя, от имени которого запускается служба 1С (обычно это USR1CV8).Чтобы не заниматься «ручной резкой» журналов каждые полгода, проанализируем возможности современных версий платформы (8.3.18+). Теперь в настройках базы в консоли администрирования или через встроенный язык можно настроить автоматическое удаление записей журнала регистрации старше определенного количества дней. Для освобождения диска сервера с сохранением истории событий во внешней аналитической СУБД можно использовать комплект скриптов для выгрузки журнала регистрации в Clickhouse.
Пример кода для программной настройки сокращения (выполняется в контексте сервера):
Настройка = ЖурналРегистрации.ПолучитьНастройкиПредельногоРазмера();
Настройка.ИспользоватьПредельныйРазмер = Истина;
Настройка.ПредельныйРазмер = 5000; // Размер в Мб
ЖурналРегистрации.УстановитьНастройкиПредельногоРазмера(Настройка);
Мы выяснили, что основная причина «отжирания» места сервером 1С — это бесконтрольный рост Журнала регистрации. Регулярное обслуживание через Конфигуратор, использование операции VACUUM для SQLite, очистка индекса полнотекстового поиска и перенос рабочих файлов на отдельный диск позволяют держать ситуацию под контролем. Не забывайте также проверять папку с дампами и временными файлами, так как при нестабильной работе сервера они могут стать неприятным сюрпризом для свободного места на диске.