Чистка серверного кэша 1С: что удалять, а что трогать нельзя

· 8 мин

Содержание

Чтобы очистить кэш 1С на сервере, остановите службу агента сервера, удалите содержимое каталогов snccntx* и временных файлов сеансов в папке кластера и запустите службу снова. Папку reg_1541 целиком удалять нельзя: в ней лежит реестр кластера, и вместе с ним пропадут информационные базы, администраторы и настройки.

Частая ошибка: админ видит, что диск забит, и сносит «всё, что похоже на кэш». Через минуту пользователи вылетают, а список баз пуст. Ниже порядок, который не ломает кластер.

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

Где хранятся данные кластера и что из них кэш

Сервер 1С держит свои файлы в каталоге служебной информации. Его путь задаётся ключом -d при запуске агента сервера (ragent). По умолчанию это:

  • Windows: подпапка srvinfo в каталоге установки платформы либо путь, который вы указали при установке службы;
  • Linux: домашний каталог пользователя usr1cv8, внутри .1cv8/1C/1cv8.

Внутри лежит папка кластера. Её имя строится из номера порта: для порта 1541 это reg_1541. Что в ней находится:

ОбъектЧто этоМожно удалять
1CV8Clst.lstсписок кластера, реестрнет
папки с GUID базжурнал регистрации и служебные данные базынет, только по отдельной процедуре
snccntx*данные контекстов сеансов, по сути кэшда, при остановленной службе
файлы сеансовых данных (sess_*)временные данные сеансовда, при остановленной службе
временные файлы в TEMP пользователя службывыгрузки, распакованные кускида

Если не уверены, что за папка перед вами, не удаляйте её, а переименуйте и проверьте, как стартует кластер.

Серверный кэш и кэш клиента

Это разные вещи. Клиентский кэш лежит у пользователя: в %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8. Его чистят, когда ломается конкретное рабочее место: не открывается форма, висит старый список баз. На сервере чистят тогда, когда проблема у всех сразу или растёт занятое место.

Почему кэш на сервере разрастается

Диск съедают не «глючные» данные, а накопленный мусор. Обычно причин несколько:

  • 🔁 аварийно завершённые сеансы оставили свои файлы, и никто их не убрал;
  • 📈 растёт число пользователей и фоновых заданий, а с ними число контекстов;
  • 🗂 журнал регистрации и технологический журнал хранятся в том же разделе;
  • ⚙️ в настройках платформы включено подробное логирование, которое забыли выключить;
  • 🧱 диск под кластер небольшой, 20–30 ГБ, и системный раздел делит его с остальным.

Прежде чем чистить, выясните, кто занимает место. Если папка с GUID базы весит 60 ГБ, а snccntx меньше гигабайта, чистка кэша ничего не даст: вам нужно сворачивать журнал регистрации.

Ручная чистка через файловую систему

Способ подходит для разовой чистки и для сервера, где мало баз. Он самый наглядный, поэтому с него и стоит начать.

Windows

  1. Предупредите пользователей и завершите их сеансы через консоль администрирования серверов.
  2. Остановите службу «Агент сервера 1С:Предприятия 8.3» в оснастке служб.
  3. Убедитесь, что процессы ragent, rmngr, rphost не висят в диспетчере задач. Если висят, завершите их.
  4. Скопируйте папку кластера в резерв.
  5. Откройте папку кластера (reg_1541) и удалите в ней каталоги snccntx*.
  6. Очистите временную папку пользователя, под которым работает служба.
  7. Запустите службу и проверьте подключение к базам.

Linux

sudo systemctl stop srv1cv83
sudo pkill -f "rphost|rmngr|ragent"
sudo cp -a /home/usr1cv8/.1cv8/1C/1cv8/reg_1541 /backup/reg_1541_$(date +%F)
sudo rm -rf /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/snccntx*
sudo systemctl start srv1cv83

Имя службы зависит от версии платформы и способа установки. Посмотрите его командой systemctl list-units | grep -i 1c, если srv1cv83 у вас не находится.

Сначала запустите ls с тем же шаблоном (ls -d .../snccntx*) и посмотрите, что именно подпадёт под удаление. Опечатка в rm -rf стоит дороже любой чистки.

Утилита rac: чистим и смотрим без остановки сервера

rac — консольный клиент администрирования, входит в поставку сервера. Он работает вместе со службой ras. Остановка агента ему не нужна, поэтому он удобен там, где простой недопустим.

Запустите службу RAS и узнайте идентификатор кластера:

rac cluster list

Затем посмотрите сеансы и найдите зависшие:

rac session list --cluster=<идентификатор_кластера>

В выводе обратите внимание на время последней активности и число вызовов. Сеанс, который «молчит» часами, но числится активным, — типичный источник мусора. Завершить его можно так:

rac session terminate --cluster=<идентификатор_кластера> --session=<идентификатор_сеанса>

С помощью rac вы не удалите snccntx — это файловая операция. Зато можно вычистить сеансы и соединения, после чего файловая чистка пройдёт чище. Если у кластера задан администратор, добавьте ключи --cluster-user и --cluster-pwd.

Автоматизация: скрипт PowerShell по расписанию

Если чистка нужна регулярно, пишите скрипт. Ниже каркас для Windows. Пути замените на свои, имя службы проверьте в оснастке.

$svc    = "1C:Enterprise 8.3 Server Agent (x86-64)"
$root   = "D:\srvinfo\reg_1541"
$backup = "E:\backup\reg_1541_" + (Get-Date -Format "yyyy-MM-dd")

Stop-Service -Name $svc -Force
Start-Sleep -Seconds 10
Get-Process ragent,rmngr,rphost -ErrorAction SilentlyContinue | Stop-Process -Force

Copy-Item $root $backup -Recurse
Get-ChildItem $root -Directory -Filter "snccntx*" | Remove-Item -Recurse -Force

Start-Service -Name $svc

Что важно в этом скрипте:

  • 🛑 сначала остановка и проверка процессов, потом удаление, а не наоборот;
  • 💾 копия делается каждый раз, и старые копии нужно ротировать, иначе скрипт сам забьёт диск;
  • 🕐 запуск — через планировщик заданий в окно без пользователей, например в 03:00 в воскресенье.

Первые запуски проведите вручную и посмотрите журнал: скрипт без наблюдения опасен.

Как понять, что чистить нужно регулярно

Раз в неделю замеряйте размер папки кластера. Если за месяц он вернулся к прежнему значению сразу после чистки, ставьте расписание раз в месяц. Если растёт на несколько гигабайт в неделю, дело в настройках, а не в частоте чистки.

Настройки платформы, из-за которых кэш растёт снова

Если вы чистите раз в неделю, а место всё равно уходит, смотрите настройки.

  1. Технологический журнал. Файл logcfg.xml в каталоге conf платформы включает подробное логирование. Журнал, оставленный после диагностики, растёт сутками. Удалите настройку или ограничьте глубину хранения (параметр history в часах).
  2. Журнал регистрации. В конфигураторе или в консоли можно сократить журнал: выгрузить старые записи в файл и очистить. Не оставляйте хранение «бессрочно» на нагруженной базе.
  3. Время жизни сеансов. Для неактивных соединений задайте в кластере разумные лимиты: сеанс без активности не должен висеть неделями.
  4. Перезапуск рабочих процессов. Для рабочего сервера в консоли администрирования настраивают периодический перезапуск процессов и допустимый объём памяти. Это снижает «наползание» мусора.
  5. Отдельный диск. Каталог кластера и журналы лучше вынести на том, который не делит место с системой. Тогда переполнение журнала не завалит ОС.

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

Что у вас происходит?

Мониторинг места: как не довести до аварии

Чистка по факту — это тушение пожара. Нужна простая проверка заранее.

  • 📏 Настройте оповещение, когда свободного места на томе кластера меньше 20%. Это делается средствами мониторинга сервера или простым заданием по расписанию.
  • 📊 Раз в неделю фиксируйте размер папки кластера и журналов. Три-четыре точки уже показывают тренд.
  • 🔍 Для разбора, что именно занимает место, на Windows подойдёт любой анализатор дисков, на Linux команда:
du -h --max-depth=2 /home/usr1cv8/.1cv8/1C/1cv8 | sort -h | tail -20

Она покажет двадцать самых тяжёлых каталогов, и сразу видно, виноват кэш или журнал.

Простой пример расчёта. Кластер занимает 50 ГБ на томе в 100 ГБ. За неделю папка выросла на 4 ГБ. Свободных 50 ГБ при таком темпе хватит на 50 / 4 ≈ 12 недель. Чистить нужно до этого срока, а лучше найти причину роста: в норме неделя не должна добавлять 4 ГБ.

Какие каталоги проверить в первую очередь

Сведите всё в один список. Размеры у каждого сервера свои, ориентир только по соотношению.

КаталогЧто проверитьДействие
snccntx* в папке кластераразмер и число папокудалять при остановленной службе
папки баз (GUID)подпапка журнала регистрациисократить срок хранения, не удалять вручную
временная папка службыфайлы старше неделиудалять
каталог технологического журналавключён ли он вообщеотключить, если не нужен
дампы аварийного завершенияфайлы .mdmpперенести на анализ или удалить
клиентский кэш (%LOCALAPPDATA%\1C\1cv8)только у пользователя с проблемойудалять при закрытой 1С

Что делать после чистки

Проверьте, что всё встало на место:

  • ✅ служба запущена, в консоли видны все базы;
  • ✅ в журнале событий ОС нет ошибок запуска ragent и rphost;
  • ✅ пара пользователей зашла в базу и открыла тяжёлый отчёт;
  • ✅ резервную копию папки кластера можно удалить только через несколько дней, когда убедились, что проблем нет.

Если сеансы стали открываться медленнее обычного, это нормально первые 5–10 минут: платформа строит контексты заново. Если и через час тормоза остались, причина была не в кэше: смотрите нагрузку на процессор, память рабочих процессов и блокировки в СУБД.

Частые ошибки при чистке

  • ❌ Удаление 1CV8Clst.lst или всей папки reg_*. После этого кластер пустой, базы придётся регистрировать заново.
  • ❌ Чистка при запущенной службе: часть файлов занята, а то, что удалилось, рабочие процессы потом ищут и падают.
  • ❌ Ручное удаление файлов из папок баз с GUID, чтобы «освободить место». Журнал регистрации сворачивают средствами платформы.
  • ❌ Скрипт без резервной копии и без проверки, что служба действительно остановлена.

Частые вопросы

Можно ли чистить серверный кэш 1С, пока работают пользователи?
Файловую чистку — нет, нужна остановка службы. Завершить отдельные зависшие сеансы можно и без остановки через rac или консоль администрирования.
Что произойдёт с данными в базе после удаления `snccntx`?
Ничего: это не данные информационной базы. Кластер создаст контексты заново при следующих подключениях. Первые минуты после запуска сеансы могут открываться чуть медленнее.
Нужно ли после чистки пересоздавать кластер?
Нет. Кластер остаётся, если вы не трогали его реестр. Пересоздавать его нужно только при повреждении реестра.
Как часто чистить кэш на сервере?
По показаниям. Для небольшой организации хватает раза в квартал или перед обновлением платформы. Если место растёт быстро, ищите причину в журналах.
Чем кэш на сервере отличается от временных файлов?
Кэш хранит данные контекстов и сеансов, которые платформа сама восстановит. Временные файлы — это выгрузки и промежуточные данные, их место в TEMP, и они чаще всего просто остаются после сбоев.