Чистка серверного кэша 1С: что удалять, а что трогать нельзя
Содержание
Чтобы очистить кэш
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С:Предприятия 8.3» в оснастке служб.
- Убедитесь, что процессы
ragent,rmngr,rphostне висят в диспетчере задач. Если висят, завершите их. - Скопируйте папку кластера в резерв.
- Откройте папку кластера (
reg_1541) и удалите в ней каталогиsnccntx*. - Очистите временную папку пользователя, под которым работает служба.
- Запустите службу и проверьте подключение к базам.
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 в воскресенье.
Первые запуски проведите вручную и посмотрите журнал: скрипт без наблюдения опасен.
Как понять, что чистить нужно регулярно
Раз в неделю замеряйте размер папки кластера. Если за месяц он вернулся к прежнему значению сразу после чистки, ставьте расписание раз в месяц. Если растёт на несколько гигабайт в неделю, дело в настройках, а не в частоте чистки.
Настройки платформы, из-за которых кэш растёт снова
Если вы чистите раз в неделю, а место всё равно уходит, смотрите настройки.
- Технологический журнал. Файл
logcfg.xmlв каталогеconfплатформы включает подробное логирование. Журнал, оставленный после диагностики, растёт сутками. Удалите настройку или ограничьте глубину хранения (параметрhistoryв часах). - Журнал регистрации. В конфигураторе или в консоли можно сократить журнал: выгрузить старые записи в файл и очистить. Не оставляйте хранение «бессрочно» на нагруженной базе.
- Время жизни сеансов. Для неактивных соединений задайте в кластере разумные лимиты: сеанс без активности не должен висеть неделями.
- Перезапуск рабочих процессов. Для рабочего сервера в консоли администрирования настраивают периодический перезапуск процессов и допустимый объём памяти. Это снижает «наползание» мусора.
- Отдельный диск. Каталог кластера и журналы лучше вынести на том, который не делит место с системой. Тогда переполнение журнала не завалит ОС.
Меняйте по одной настройке и сутки наблюдайте за ростом папки. Если поменять пять параметров сразу, вы не поймёте, какой помог.
rac, завершите зависшие, затем при необходимости выполните ручную чистку snccntx* вне рабочего времени.snccntx*.Мониторинг места: как не довести до аварии
Чистка по факту — это тушение пожара. Нужна простая проверка заранее.
- 📏 Настройте оповещение, когда свободного места на томе кластера меньше 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, и они чаще всего просто остаются после сбоев.