Многие администраторы и специалисты 1С рано или поздно сталкиваются с ситуацией, когда свободное место на диске сервера стремительно тает. Зачастую виновником оказывается каталог кластера серверов 1С. Пользователи жалуются на медленную работу, а системные мониторы сигналят о критическом остатке дискового пространства. При детальном анализе выясняется, что папка reg_1541 разрослась до невероятных размеров. Давайте подробно разберем, что именно скапливается в этой директории, проанализируем причины такого поведения системы и шаг за шагом решим эту проблему.
Для начала выясним причину роста. Откроем каталог C:\Program Files\1cv8\srvinfo\reg_1541. Обычно мы видим там системные файлы кластера, папки с префиксом snccntx и множество папок с длинными именами в формате уникальных идентификаторов (GUID), например, 0f100c7c-a6ae-48d7-90fa-ec971944fc07.
Ошибочно называть всё содержимое этой папки "постоянным серверным кэшем". Полноценного постоянного серверного кэша на диске в 1С нет. Посмотрим, из чего состоят эти данные:
snccntx. Это временные файлы, которые создаются для поддержания работы текущих сеансов и повторного использования контекста. Они должны автоматически удаляться при закрытии сеанса, но при аварийных завершениях могут накапливаться.1Cv8FTxt или 1Cv8FTxt2 — индексы полнотекстового поиска (ППД).1Cv8Log — журнал регистрации информационной базы — для работы с ним поможет универсальный инструмент для администрирования 1С и работы с журналом регистрации.Проанализируем ситуацию: если место убывает десятками гигабайт за пару дней, то виновником в 90% случаев является полнотекстовый поиск или раздутый журнал регистрации. Рассмотрим решения для каждой из этих проблем.
Разберем ситуацию, когда безумно жрет место папка 1Cv8FTxt. Это каталог индексов полнотекстового поиска. В платформе 1С существует официально зарегистрированная ошибка (проявляется, например, в релизах 8.3.24 и 8.3.25), из-за которой процесс обновления индекса зацикливается. Временный файл tableChanges.dat (или changes.dat) не удаляется после завершения задачи, а начинает бесконечно расти.
Как решить эту проблему? Выполним следующие шаги:
1C:Enterprise 8.3 Server Agent, чтобы снять блокировки с файлов.1Cv8FTxt проблемной базы и вручную удалим гигантский файл tableChanges.dat..dt и загрузить ее обратно в пустую оболочку информационной базы.Часто администраторы снимают галочку "Полнотекстовый поиск данных" в общих настройках и удивляются, почему система продолжает работать с индексами. Выясним причину: снятие общей настройки не всегда останавливает фоновые процессы платформы.
Сделаем всё правильно:
Обновление индекса ППД и Слияние индекса ППД (также полезен анализ невыполненных заданий).1Cv8FTxt.В каталоге кластера также хранятся журналы регистрации (каталог 1Cv8Log). Со временем там накапливается много мусора.
Удаление папок-сирот: Если базу когда-то удалили из консоли администрирования кластеров 1С, её физическая папка с логами и старыми сеансовыми данными остается на диске. Чтобы вычислить такие папки, откроем текстовым редактором файл 1CV8Clst.lst или 1CV8Clsto.lst, которые лежат в корне директории reg_1541. Там прописано соответствие GUID-имен папок и названий баз. Проверим наши каталоги: все GUID-папки, которых нет в этом файле, смело удаляем.
Особенности формата SQLite: Если вы решили урезать журнал регистрации в рабочей базе (через Конфигуратор -> Администрирование -> Настройка журнала регистрации -> Сократить), помните о важной особенности. Современный формат журнала .lgd использует базу данных SQLite. После "сокращения" из программы физический размер файла на диске не уменьшится! Платформа лишь помечает старые строки как удаленные. Чтобы файл "похудел" физически, необходимо выполнить его сжатие отдельной утилитой SQLite с помощью команды VACUUM.
Если проблема именно в накоплении сеансовых данных (папки snccntx*) из-за аварийных завершений работы, мы можем настроить программную очистку. Для этого системные администраторы пишут небольшие скрипты (bat-файлы или PowerShell), которые помещаются в Планировщик задач Windows и выполняются, например, раз в неделю ночью.
Рассмотрим алгоритм правильной очистки (скрипт на AutoIT):
Посмотрим на пример такого скрипта (батник для очистки кэша) в формате командного файла 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С Предприятия и уберегут вас от внезапной нехватки места на системном диске.