Сеансовые данные кластера 1С:Предприятия: как найти их на диске и безопасно удалить

· 9 мин

Содержание

Серверный кэш 1С:Предприятия хранится в рабочем каталоге кластера srvinfo. На Windows по умолчанию это C:\Program Files\1cv8\srvinfo\reg_1541, на Linux — /home/usr1cv8/.1cv8/1C/1cv8/reg_1541. Сам кэш — это папки с именами snccntx…: в них сервер держит сеансовые данные. Чтобы очистить кэш , останавливают службу агента сервера, удаляют эти папки и запускают службу снова.

Типичная ситуация: после обновления конфигурации у части пользователей формы открываются со старыми реквизитами, а очистка клиентского кэша на рабочих местах не помогает. Или администратор видит, что диск на сервере 1С заполнен, хотя базы лежат на отдельном сервере СУБД. В обоих случаях путь ведёт в srvinfo.

Как сервер 1С кэширует данные и чем это отличается от кэша клиента

В 1С есть два независимых кэша, и их часто путают.

  • 💻 Клиентский кэш живёт на компьютере пользователя, в профиле Windows: %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Там лежат метаданные конфигурации, настройки форм, служебные файлы. Чистится параметром запуска /ClearCache или удалением папок с GUID-именами.
  • 🖥️ Серверный кэш живёт на машине, где работает кластер. Это файлы рабочих процессов rphost: сеансовые данные, временные хранилища, контексты сеансов. Пользователь к ним доступа не имеет.

Кроме кэша, в том же каталоге кластера хранятся вещи, которые кэшем не являются и удалять их нельзя без понимания последствий:

Объект в reg_1541Что этоМожно удалять?
1CV8Clst.lstРеестр кластера: список баз, рабочих серверов, администраторовНет. Без него кластер «забудет» все базы
Папки с GUID базСлужебные данные конкретной информационной базыЦеликом — нет
1Cv8Log внутри папки базыЖурнал регистрацииНет, только сокращать штатно
1Cv8FTxt внутри папки базыИндекс полнотекстового поискаМожно, но индекс придётся строить заново
snccntx…Сеансовые данные (тот самый серверный кэш)Да, при остановленной службе

Сами базы данных в srvinfo не хранятся: таблицы лежат в СУБД (MS SQL, PostgreSQL). Поэтому очистка серверного кэша не трогает документы и справочники.

Номер 1541 в имени папки reg_1541 — это порт менеджера кластера. Если кластер поднят на другом порту, папка будет называться иначе, например reg_2541.

Где лежит серверный кэш 1С на Windows

При стандартной установке сервера 1С:Предприятия 8.3 x64 рабочий каталог такой:

C:\Program Files\1cv8\srvinfo\
    1cv8wsrv.lst          — реестр центрального сервера
    reg_1541\
        1CV8Clst.lst      — реестр кластера
        snccntx<GUID>\    — сеансовые данные
        <GUID базы>\
            1Cv8Log\      — журнал регистрации
            1Cv8FTxt\     — полнотекстовый индекс

Для 32-разрядного сервера путь начинается с C:\Program Files (x86)\1cv8\srvinfo. Но на это значение полагаться нельзя: администратор мог при установке указать другой каталог, например на отдельный диск D:\srvinfo.

Как узнать точный путь на своём сервере

Путь к каталогу кластера передаётся службе агента параметром -d. Проверить его можно так:

  1. Откройте services.msc.
  2. Найдите службу «Агент сервера 1С:Предприятия 8.3» (в названии будет разрядность, иногда номер версии).
  3. Откройте её свойства и посмотрите поле «Исполняемый файл».
  4. В строке будет фрагмент вида -d "C:\Program Files\1cv8\srvinfo" — это и есть корень.

То же самое из командной строки:

sc query state= all | findstr /i "1C"
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"

Первая команда покажет точное системное имя службы, вторая — её параметры, включая путь с -d. Имя во второй команде подставьте из вывода первой.

Если на сервере стоят несколько версий платформы и несколько служб агента, у каждой свой каталог srvinfo. Ищите тот, к которому привязан нужный кластер.

Где хранится серверный кэш 1С на Linux

На Linux сервер 1С работает от пользователя usr1cv8. Каталог кластера по умолчанию лежит в его домашней папке:

/home/usr1cv8/.1cv8/1C/1cv8/
    1cv8wsrv.lst
    reg_1541/
        1CV8Clst.lst
        snccntx<GUID>/
        <GUID базы>/

Каталог скрытый (начинается с точки), поэтому ls без ключа -a его не покажет.

Как проверить путь и имя службы

Способ запуска зависит от версии платформы:

  • 🐧 Новые версии (8.3.21 и выше) ставят службу systemd вида srv1cv8-8.3.xx.yyyy@default. Каталог данных задаётся в параметрах юнита.
  • 🐧 Старые версии использовали init-скрипт srv1cv83, а путь к данным брали из переменной SRV1CV8_DATA в файле /etc/sysconfig/srv1cv83.

Найти службу и путь помогут команды:

systemctl list-units --all | grep -i srv1cv8
ps -ef | grep ragent

Во второй команде в строке процесса ragent виден параметр -d с реальным каталогом. Это самый надёжный способ, потому что он показывает то, с чем сервер работает прямо сейчас.

Права на каталог должны оставаться за usr1cv8. Если чистить кэш от root и случайно создать там файлы с владельцем root, служба после запуска может не получить к ним доступ.

Очистка серверного кэша 1С вручную

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

Перед удалением скопируйте reg_1541 целиком в резервную папку. Если что-то пойдёт не так, копия вернёт кластер в исходное состояние за минуту.

Порядок действий на Windows

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

Порядок действий на Linux

sudo systemctl stop srv1cv8-8.3.xx.yyyy@default
sudo cp -a /home/usr1cv8/.1cv8/1C/1cv8/reg_1541 /root/reg_1541_backup
sudo find /home/usr1cv8/.1cv8/1C/1cv8/reg_1541 -maxdepth 2 -type d -name 'snccntx*' -exec rm -rf {} +
sudo systemctl start srv1cv8-8.3.xx.yyyy@default

Имя службы замените на своё из вывода systemctl list-units. На старых версиях вместо systemctl используйте service srv1cv83 stop и service srv1cv83 start.

Как проверить результат

После запуска службы откройте консоль «Администрирование серверов 1С Предприятия» и убедитесь, что кластер на месте, а в списке информационных баз видны все базы. Затем:

  1. Зайдите в каждую рабочую базу хотя бы одним пользователем.
  2. Проверьте, что регламентные задания снова выполняются: в консоли кластера появятся фоновые сеансы.
  3. Если ошибка касалась форм после обновления, попросите пользователей запустить 1С с параметром /ClearCache — клиентский кэш серверная очистка не затрагивает.

Когда всё работает пару дней без сбоев, резервную копию reg_1541 можно удалить.

Чего не делать

  • ❌ Не удаляйте 1CV8Clst.lst и 1cv8wsrv.lst. Совет «удалите всё в srvinfo» встречается на форумах, но после него придётся заново регистрировать в кластере каждую базу.
  • ❌ Не удаляйте папки при работающей службе: часть файлов занята, а остальное сервер сразу пересоздаст в непредсказуемом состоянии.
  • ❌ Не трогайте 1Cv8Log, если журнал регистрации нужен бухгалтерии или аудиторам: это история действий пользователей.

Автоматическая очистка: скрипты и планировщик

Чистить кэш по расписанию имеет смысл, если он регулярно разрастается или после обновлений повторяются «призрачные» ошибки. Для большинства серверов хватает ручной чистки после обновления платформы или конфигурации.

PowerShell и Планировщик заданий Windows

Скрипт останавливает службу, удаляет сеансовые данные и запускает службу обратно. Перед использованием поменяйте имя службы и путь на свои.

$service = "1C:Enterprise 8.3 Server Agent (x86-64)"
$cluster = "C:\Program Files\1cv8\srvinfo\reg_1541"
$log     = "C:\Scripts\clear1c.log"

Stop-Service -Name $service -Force
Start-Sleep -Seconds 30

Get-ChildItem -Path $cluster -Directory -Recurse -Filter "snccntx*" |
    Remove-Item -Recurse -Force

Start-Service -Name $service
Add-Content -Path $log -Value "$(Get-Date -Format 'yyyy-MM-dd HH:mm') кэш очищен"

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

Чтобы запускать скрипт ночью:

  1. Откройте taskschd.msc и создайте простую задачу.
  2. Триггер — например, еженедельно в воскресенье в 03:00.
  3. Действие — запуск программы powershell.exe с аргументами -ExecutionPolicy Bypass -File C:\Scripts\clear1c.ps1.
  4. В свойствах задачи отметьте запуск с наивысшими правами и от учётной записи администратора, иначе служба не остановится.

bash и cron на Linux

#!/bin/bash
SRV="srv1cv8-8.3.xx.yyyy@default"
DIR="/home/usr1cv8/.1cv8/1C/1cv8/reg_1541"

systemctl stop "$SRV"
sleep 30
find "$DIR" -maxdepth 2 -type d -name 'snccntx*' -exec rm -rf {} +
systemctl start "$SRV"
echo "$(date '+%F %R') кэш очищен" >> /var/log/clear1c.log

Сохраните как /usr/local/bin/clear1c.sh, дайте права chmod +x и добавьте в crontab пользователя root строку:

0 3 * * 0 /usr/local/bin/clear1c.sh

Это запуск каждое воскресенье в 03:00.

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

Альтернатива без остановки службы

Часть проблем, ради которых чистят кэш, решает плановый перезапуск рабочих процессов. В консоли «Администрирование серверов 1С Предприятия» откройте свойства кластера: там есть параметры «Интервал перезапуска» и «Допустимый объём памяти». Кластер сам поднимает новый rphost и переводит на него соединения, не обрывая работу так резко, как остановка службы.

Почему растёт каталог srvinfo и как это диагностировать

Жалоба «серверный кэш 1С занял весь диск» обычно означает, что вырос каталог srvinfo целиком. Сами папки snccntx редко бывают главным виновником.

Сначала измерьте

На Windows размер подпапок покажет PowerShell:

Get-ChildItem "C:\Program Files\1cv8\srvinfo\reg_1541" -Directory |
  ForEach-Object {
    $s = (Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue |
          Measure-Object Length -Sum).Sum
    "{0,10:N0} МБ  {1}" -f ($s/1MB), $_.Name
  } | Sort-Object -Descending

На Linux:

sudo du -sh /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/* | sort -h

Чтобы понять, какой базе принадлежит папка с GUID, откройте свойства базы в консоли кластера: там указан её идентификатор.

Кто обычно занимает место

Диагностика: выберите симптом

Признаки, что пора чистить

  • 🐢 После обновления платформы или конфигурации вход в базу занимает заметно дольше, чем до него.
  • 🔁 Ошибка воспроизводится на всех рабочих местах, и /ClearCache на клиентах её не убирает.
  • 💾 Каталог reg_1541 за месяц вырос в разы без роста числа баз и пользователей.
  • ⚠️ В журнале событий Windows или в системном логе Linux появляются сообщения об аварийном завершении rphost.

Если после очистки проблема вернулась через день-два, кэш — следствие, а не причина. Ищите сбой рабочих процессов: нехватку памяти, ошибки СУБД, конфликт версий платформы на клиенте и сервере.

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

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