Папка srvinfo и сеансовые данные: безопасная чистка сервера 1С 8.3
Содержание
Кэш сервера 1С 8.3 находится в каталоге кластера: в Windows по умолчанию это C:\Program Files\1cv8\srvinfo\reg_1541, в Linux — /home/usr1cv8/.1cv8/1C/1cv8/reg_1541. Чтобы его очистить, остановите службу агента сервера, удалите внутри reg_1541 папки snccntx* (сеансовые данные) и запустите службу снова. Остальное содержимое каталога трогать не нужно.
Типичная ситуация: после аварийного отключения питания пользователи не могут войти в базу, рабочий процесс rphost падает через минуту после старта, а диск C: внезапно забит на 40 ГБ. Почти всегда виноваты повреждённые или разросшиеся сеансовые данные. Их чистка занимает 5 минут, но требует простоя, поэтому делать её надо осознанно.
Что сервер 1С хранит на диске и что из этого считается кэшем
Под «кэшем сервера» обычно понимают не одну папку, а набор служебных данных кластера. У них разное назначение и разная цена удаления.
| Что | Где лежит | Можно удалить? |
|---|---|---|
🗂️ Реестр кластера 1CV8Clst.lst | в reg_1541 | Нет: пропадёт список баз, администраторов и настроек кластера |
🗂️ Список рабочих серверов 1cv8wsrv.lst | в корне srvinfo | Нет |
📁 Сеансовые данные snccntx… | в reg_1541 | Да, при остановленной службе — это и есть кэш |
| 📁 Папки с GUID базы | в reg_1541 | Нет: внутри журнал регистрации и служебные файлы базы |
📜 Журнал регистрации 1Cv8Log | в папке с GUID базы | Нет, если журнал нужен для разбора действий пользователей |
| 🔎 Индекс полнотекстового поиска | в папке с GUID базы | Можно, но поиск перестанет работать до перестроения индекса |
| 🧾 Временные файлы | TEMP пользователя, под которым работает служба | Да, при остановленной службе |
Сеансовые данные — это состояние сеансов пользователей и временное хранилище: открытые формы, промежуточные результаты, файлы, переданные через временное хранилище. При нормальной работе платформа сама создаёт и убирает их. Проблемы начинаются, когда служба завершилась аварийно или в сеансе через временное хранилище гоняли большие файлы.
Номер в имени reg_1541 — это порт менеджера кластера. Если кластер поднят на другом порту, например 2541, папка будет называться reg_2541. На одном сервере может быть несколько таких папок — по одной на кластер.
Отдельно существует кэш клиента — папки с GUID в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 на компьютере пользователя. Это другое хранилище, и чистка сервера его не затрагивает.
Где находится кэш сервера 1С в Windows
Путь по умолчанию задаётся при установке сервера как службы: C:\Program Files\1cv8\srvinfo. Но администратор мог указать любой другой каталог, например на отдельном диске D:\srvinfo. Гадать не нужно: реальный путь записан в параметрах службы.
Как узнать точный путь
- Откройте командную строку от имени администратора.
- Найдите имя службы агента:
sc query state= all | findstr /i "1C:Enterprise"
- Посмотрите параметры её запуска (имя службы подставьте своё):
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"
- В строке
BINARY_PATH_NAMEнайдите ключ-d. Каталог после него и естьsrvinfo. Рядом стоят ключи-port 1540(агент) и-regport 1541(менеджер кластера) — по последнему вы поймёте имя папкиreg_….
Второй способ — оснастка «Службы» (services.msc): откройте свойства службы агента и посмотрите поле «Исполняемый файл».
Служба работает от отдельного пользователя, обычно USR1CV8. У него должны быть права на запись в srvinfo. Если после переноса каталога служба не стартует, первым делом проверьте права этого пользователя на новую папку.
Пути к кэшу сервера 1С в Linux
В Linux сервер 1С по умолчанию работает от пользователя usr1cv8, и каталог кластера лежит в его домашней папке:
/home/usr1cv8/.1cv8/1C/1cv8/
├── 1cv8wsrv.lst
└── reg_1541/
├── 1CV8Clst.lst
├── snccntx…/
└── <GUID базы>/
Каталог может быть переопределён ключом -d при запуске ragent. Проверить фактический путь проще всего по запущенному процессу:
ps aux | grep [r]agent
В выводе будет полная строка запуска с ключом -d.
Имя службы зависит от способа установки и версии платформы. В новых версиях 8.3 служба регистрируется в systemd с номером версии в имени, в старых — как srv1cv83. Узнать своё имя можно так:
systemctl list-units --all | grep -i 1cv8
Мягкая очистка без остановки службы: консоль кластера и rac
Полная чистка требует остановки службы. Но часть задач решается без неё: завершить зависшие сеансы, перезапустить разросшийся рабочий процесс. Начинайте с этого.
Через консоль «Администрирование серверов 1С Предприятия»
- Откройте консоль и разверните:
Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер>. - В ветке
Сеансынайдите зависшие сеансы — с давним временем последней активности или от пользователей, которые уже ушли домой. - Правой кнопкой мыши по сеансу →
Удалить. Сеанс завершится, его сеансовые данные платформа освободит. - В ветке
Рабочие процессыпосмотрите память каждогоrphost. Процесс с аномально большим объёмом занятой памяти — кандидат на перезапуск.
Чтобы рабочие процессы перезапускались регулярно, откройте свойства кластера и задайте Интервал перезапуска (в секундах) и допустимый объём памяти рабочих процессов. Платформа поднимет новый процесс, переведёт на него соединения и только потом погасит старый.
Через rac
Утилита rac работает не с агентом напрямую, а через сервер администрирования ras. Его нужно запустить заранее (порт по умолчанию — 1545):
ras cluster --daemon
Дальше — стандартная последовательность: получить идентификатор кластера, список сеансов и завершить ненужные.
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<id_кластера>
rac localhost:1545 session terminate --cluster=<id_кластера> --session=<id_сеанса>
rac localhost:1545 process list --cluster=<id_кластера>
Если у кластера задан администратор, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>. Полный список команд и параметров выводит rac help и rac help session.
Отдельной команды «очистить кэш» в rac нет. Утилита нужна, чтобы корректно выпустить всех из базы перед остановкой службы и убедиться, что активных сеансов не осталось.
А что такое rmngr
rmngr — не утилита, а процесс менеджера кластера. Рядом работают ragent (агент сервера) и rphost (рабочие процессы). Запускать rmngr вручную или «чистить им кэш» нельзя: агент поднимает его сам. Если менеджер кластера завис, лечится это перезапуском службы агента — он остановит и заново запустит и rmngr, и rphost.
Как очистить кэш сервера 1С вручную: пошаговый порядок
Остановка службы обрывает работу всех пользователей на всех базах кластера. Делайте это вне рабочего времени и заранее предупредите людей. Несохранённые документы будут потеряны.
- Предупредите пользователей и дождитесь, пока они выйдут. Оставшиеся сеансы завершите через консоль или
rac. - Остановите фоновые и регламентные задания, если они идут прямо сейчас: обмен, закрытие месяца , загрузка из банка.
- Скопируйте каталог
srvinfoцеликом в архив. Это страховка на случай, если вы удалите лишнее. - Остановите службу агента:
- Windows:
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"или черезservices.msc; - Linux:
sudo systemctl stop <имя_службы>.
- Windows:
- Убедитесь в диспетчере задач или командой
ps aux | grep rphost, что процессовragent,rmngrиrphostне осталось. - Откройте
srvinfo\reg_1541и удалите все папки, имя которых начинается сsnccntx. - Очистите временные файлы пользователя службы (папка
TEMPпользователяUSR1CV8в Windows; в Linux — файлы пользователяusr1cv8во временном каталоге). - Запустите службу и войдите в базу под своим пользователем.
Первый вход после чистки обычно длится дольше: сервер заново собирает служебные данные. Это нормально.
Как проверить, что всё прошло успешно
После запуска службы пройдите короткую проверку, пока пользователи не начали работу:
- 🟢 в консоли кластера видны все базы, которые были до чистки;
- 🟢 в ветке
Рабочие процессыесть хотя бы одинrphost, и он не перезапускается каждую минуту; - 🟢 вы входите в каждую базу кластера, открывается рабочий стол;
- 🟢 в
reg_1541появились новые папкиsnccntx…небольшого размера — сервер снова пишет сеансовые данные; - 🟢 регламентные задания запускаются: проверьте по журналу регистрации, что ближайшее задание отработало.
Если какой-то базы нет в списке, не регистрируйте её заново поверх старой. Остановите службу и сравните 1CV8Clst.lst с копией: возможно, файл был повреждён ещё до чистки.
Не удаляйте 1CV8Clst.lst. Без него кластер «забудет» все зарегистрированные базы. Если это случилось — остановите службу и верните файл из копии, сделанной на шаге 3.
Автоматизация: скрипт и расписание
Если сеансовые данные разрастаются регулярно, чистку можно поставить на ночь. Прежде чем это делать, найдите причину роста — расписание лечит симптом.
Windows: PowerShell и планировщик
$svc = "1C:Enterprise 8.3 Server Agent (x86-64)"
$reg = "C:\Program Files\1cv8\srvinfo\reg_1541"
$log = "C:\Scripts\clear1c.log"
Add-Content $log "$(Get-Date) остановка службы"
Stop-Service -Name $svc -Force
Start-Sleep -Seconds 30
Get-ChildItem -Path $reg -Directory -Filter "snccntx*" |
Remove-Item -Recurse -Force -ErrorAction Continue
Start-Service -Name $svc
Add-Content $log "$(Get-Date) служба запущена"
Сохраните как C:\Scripts\clear1c.ps1 и зарегистрируйте задание на 3:00 по воскресеньям:
schtasks /create /tn "Clear1CSessionData" /sc weekly /d SUN /st 03:00 /ru SYSTEM ^
/tr "powershell -NoProfile -ExecutionPolicy Bypass -File C:\Scripts\clear1c.ps1"
Linux: bash и cron
#!/bin/bash
SVC="srv1cv83" # подставьте имя своей службы
REG="/home/usr1cv8/.1cv8/1C/1cv8/reg_1541"
systemctl stop "$SVC"
sleep 30
find "$REG" -maxdepth 1 -type d -name 'snccntx*' -exec rm -rf {} +
systemctl start "$SVC"
logger "1C: сеансовые данные очищены"
Строка в crontab -e пользователя root для запуска в 3:00 по воскресеньям:
0 3 * * 0 /usr/local/bin/clear1c.sh
Проверьте, что время задания не совпадает с регламентными заданиями 1С, резервным копированием СУБД и ночным обменом. Остановка службы посреди выгрузки даст незавершённый обмен.
Диагностика: когда проблема действительно в кэше
Чистить сеансовые данные «на всякий случай» при любой ошибке бессмысленно. Сначала проверьте размер:
Get-ChildItem "C:\Program Files\1cv8\srvinfo\reg_1541" -Directory -Filter "snccntx*" |
ForEach-Object { "{0} {1:N0} МБ" -f $_.Name, ((Get-ChildItem $_.FullName -Recurse -File |
Measure-Object Length -Sum).Sum / 1MB) }
du -sh /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/snccntx*
Сотни мегабайт на кластер с десятком пользователей — норма. Десятки гигабайт — повод разбираться.
Если после чистки проблема вернулась в течение пары дней, кэш — следствие, а не причина. Включите технологический журнал (файл logcfg.xml в каталоге conf платформы) и посмотрите, какие события предшествуют падению rphost.