Почему переполняется папка сервера 1С (reg_1541) и как правильно очистить кэш?

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

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

Что на самом деле хранится в каталоге сервера 1С?

Для начала выясним причину роста. Откроем каталог C:\Program Files\1cv8\srvinfo\reg_1541. Обычно мы видим там системные файлы кластера, папки с префиксом snccntx и множество папок с длинными именами в формате уникальных идентификаторов (GUID), например, 0f100c7c-a6ae-48d7-90fa-ec971944fc07.

Ошибочно называть всё содержимое этой папки "постоянным серверным кэшем". Полноценного постоянного серверного кэша на диске в 1С нет. Посмотрим, из чего состоят эти данные:

  1. Сеансовые данные пользователей: Хранятся в папках, имя которых начинается с snccntx. Это временные файлы, которые создаются для поддержания работы текущих сеансов и повторного использования контекста. Они должны автоматически удаляться при закрытии сеанса, но при аварийных завершениях могут накапливаться.
  2. Данные информационных баз: Папки с именами в виде GUID. Внутри каждой такой папки находятся подкаталоги конкретной базы:

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

Проблема №1: Бесконтрольный рост индексов полнотекстового поиска

Разберем ситуацию, когда безумно жрет место папка 1Cv8FTxt. Это каталог индексов полнотекстового поиска. В платформе 1С существует официально зарегистрированная ошибка (проявляется, например, в релизах 8.3.24 и 8.3.25), из-за которой процесс обновления индекса зацикливается. Временный файл tableChanges.dat (или changes.dat) не удаляется после завершения задачи, а начинает бесконечно расти.

Как решить эту проблему? Выполним следующие шаги:

  1. Остановим службу 1C:Enterprise 8.3 Server Agent, чтобы снять блокировки с файлов.
  2. Зайдем в папку 1Cv8FTxt проблемной базы и вручную удалим гигантский файл tableChanges.dat.
  3. Запустим службу 1С.
  4. Для кардинального решения проблемы рекомендуем обновить платформу 1С до версии, где этот баг исправлен (например, 8.3.25.1546 и выше).
  5. В самых запущенных случаях, когда индекс сломан окончательно, потребуется выгрузить базу в файл .dt и загрузить ее обратно в пустую оболочку информационной базы.

Что делать, если полнотекстовый поиск "отключен", но папка всё равно растет?

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

Сделаем всё правильно:

  1. Зайдем в конфигуратор или предприятие в режиме "Функции технического специалиста" -> "Управление полнотекстовым поиском".
  2. Нажмем кнопку "Очистить индекс". Делать это желательно в монопольном режиме.
  3. Далее перейдем в раздел "Регламентные и фоновые задания" (удобно использовать Повелитель регламентных заданий) — здесь поможет инструмент автоматического контроля регламентных заданий.
  4. Найдем задания Обновление индекса ППД и Слияние индекса ППД (также полезен анализ невыполненных заданий).
  5. Принудительно снимем с них признак "Использование" или очистим расписание. Только после этого платформа действительно перестанет обращаться к каталогу 1Cv8FTxt.

Проблема №2: Журналы регистрации и "Мертвые" базы

В каталоге кластера также хранятся журналы регистрации (каталог 1Cv8Log). Со временем там накапливается много мусора.

Удаление папок-сирот: Если базу когда-то удалили из консоли администрирования кластеров 1С, её физическая папка с логами и старыми сеансовыми данными остается на диске. Чтобы вычислить такие папки, откроем текстовым редактором файл 1CV8Clst.lst или 1CV8Clsto.lst, которые лежат в корне директории reg_1541. Там прописано соответствие GUID-имен папок и названий баз. Проверим наши каталоги: все GUID-папки, которых нет в этом файле, смело удаляем.

Особенности формата SQLite: Если вы решили урезать журнал регистрации в рабочей базе (через Конфигуратор -> Администрирование -> Настройка журнала регистрации -> Сократить), помните о важной особенности. Современный формат журнала .lgd использует базу данных SQLite. После "сокращения" из программы физический размер файла на диске не уменьшится! Платформа лишь помечает старые строки как удаленные. Чтобы файл "похудел" физически, необходимо выполнить его сжатие отдельной утилитой SQLite с помощью команды VACUUM.

Как программно чистить кэш (сеансовые данные)?

Если проблема именно в накоплении сеансовых данных (папки snccntx*) из-за аварийных завершений работы, мы можем настроить программную очистку. Для этого системные администраторы пишут небольшие скрипты (bat-файлы или PowerShell), которые помещаются в Планировщик задач Windows и выполняются, например, раз в неделю ночью.

Рассмотрим алгоритм правильной очистки (скрипт на AutoIT):

  1. Обязательная остановка службы сервера 1С.
  2. Принудительное "убийство" зависших процессов платформы.
  3. Удаление каталогов сеансовых данных.
  4. Удаление временных файлов пользователя ОС, под которым работает служба.
  5. Запуск службы.

Посмотрим на пример такого скрипта (батник для очистки кэша) в формате командного файла Windows (.bat):


@echo off
echo Останавливаем службу сервера 1С...
net stop "1C:Enterprise 8.3 Server Agent"

echo Завершаем зависшие процессы...
taskkill /f /im rphost.exe
taskkill /f /im rmngr.exe

echo Очищаем папки сеансовых данных (snccntx)...
for /d %%x in ("C:\Program Files\1cv8\srvinfo\reg_1541\snccntx*") do rd /s /q "%%x"

echo Очищаем временные файлы...
del /q /f /s %TEMP%\*
for /d %%x in (%TEMP%\*) do rd /s /q "%%x"

echo Запускаем службу сервера 1С...
net start "1C:Enterprise 8.3 Server Agent"

Важное предупреждение: Применяйте данный скрипт только в моменты, когда в базах гарантированно нет пользователей, так как принудительная остановка службы и процессов rphost.exe прервет все текущие соединения и может привести к потере несохраненных данных — для безопасного выполнения есть обработка для безопасного завершения сеансов и процессов 1С.

Проанализировав все вышеописанные шаги, мы можем взять под полный контроль рост директории reg_1541. Регулярная очистка "мертвых" баз, правильная настройка (или полное отключение) регламентных заданий полнотекстового поиска и периодическая чистка временных файлов сеансов обеспечат стабильную работу сервера 1С Предприятия и уберегут вас от внезапной нехватки места на системном диске.

← На главную