Папка srvinfo и сеансовые данные: безопасная чистка сервера 1С 8.3

· 9 мин

Содержание

Кэш сервера 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. Гадать не нужно: реальный путь записан в параметрах службы.

Как узнать точный путь

  1. Откройте командную строку от имени администратора.
  2. Найдите имя службы агента:
sc query state= all | findstr /i "1C:Enterprise"
  1. Посмотрите параметры её запуска (имя службы подставьте своё):
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"
  1. В строке 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. Откройте консоль и разверните: Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер>.
  2. В ветке Сеансы найдите зависшие сеансы — с давним временем последней активности или от пользователей, которые уже ушли домой.
  3. Правой кнопкой мыши по сеансу → Удалить. Сеанс завершится, его сеансовые данные платформа освободит.
  4. В ветке Рабочие процессы посмотрите память каждого 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С вручную: пошаговый порядок

Остановка службы обрывает работу всех пользователей на всех базах кластера. Делайте это вне рабочего времени и заранее предупредите людей. Несохранённые документы будут потеряны.

  1. Предупредите пользователей и дождитесь, пока они выйдут. Оставшиеся сеансы завершите через консоль или rac.
  2. Остановите фоновые и регламентные задания, если они идут прямо сейчас: обмен, закрытие месяца , загрузка из банка.
  3. Скопируйте каталог srvinfo целиком в архив. Это страховка на случай, если вы удалите лишнее.
  4. Остановите службу агента:
    • Windows: net stop "1C:Enterprise 8.3 Server Agent (x86-64)" или через services.msc;
    • Linux: sudo systemctl stop <имя_службы>.
  5. Убедитесь в диспетчере задач или командой ps aux | grep rphost, что процессов ragent, rmngr и rphost не осталось.
  6. Откройте srvinfo\reg_1541 и удалите все папки, имя которых начинается с snccntx.
  7. Очистите временные файлы пользователя службы (папка TEMP пользователя USR1CV8 в Windows; в Linux — файлы пользователя usr1cv8 во временном каталоге).
  8. Запустите службу и войдите в базу под своим пользователем.

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

Как проверить, что всё прошло успешно

После запуска службы пройдите короткую проверку, пока пользователи не начали работу:

  • 🟢 в консоли кластера видны все базы, которые были до чистки;
  • 🟢 в ветке Рабочие процессы есть хотя бы один 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.

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

Пропадёт ли журнал регистрации после очистки кэша сервера?
Нет, если удалять только папки snccntx. Журнал лежит в папке 1Cv8Log внутри каталога с GUID базы, и его эта процедура не касается.
Есть ли кэш сервера у файловой базы?
Нет. Файловая база работает без агента и кластера, каталога srvinfo у неё нет. Для неё имеет смысл чистить только кэш клиента.
Можно ли удалить snccntx, не останавливая службу?
Не стоит. Работающий сервер держит эти файлы открытыми, часть не удалится, а оставшиеся данные окажутся несогласованными. Без остановки службы безопасно только завершать сеансы и перезапускать рабочие процессы.
Как часто нужно чистить кэш сервера 1С?
Планово — не обязательно. Платформа убирает сеансовые данные сама. Чистка нужна после аварийной остановки сервера или при аномальном росте каталога.
Что делать, если серверов в кластере несколько?
Сеансовые данные есть на каждом рабочем сервере. Останавливайте службы на всех серверах кластера и чистите snccntx на каждом, иначе повреждённые данные останутся на одном из них.