Кэш сервера 1С:Предприятия 8.3: что лежит в srvinfo и как его безопасно чистить

· 10 мин

Содержание

Кэш сервера 1С хранится в каталоге кластера: в Windows по умолчанию это C:\Program Files\1cv8\srvinfo\reg_1541, в Linux — /home/usr1cv8/.1cv8/1C/1cv8/reg_1541. «Чистка кэша сервера» на практике означает удаление папок snccntx* внутри reg_1541 при остановленной службе агента сервера. Список баз кластера (1CV8Clst.lst) и папки баз с журналом регистрации трогать не нужно.

Путь может отличаться: каталог задаётся параметром -d при запуске агента, а номер в имени reg_1541 берётся из порта менеджера кластера. Поэтому начинайте не с проводника, а с проверки, где реально работает ваш сервер. Это общее для платформы 8.3 и не зависит от конфигурации — БП, ЗУП или УТ.

Что сервер 1С держит на диске и при чём тут кэш

Сервер 1С:Предприятия хранит на диске не только кэш. В каталоге кластера лежат вещи с разной ценностью, и путать их опасно.

  • 📋 Реестр кластера — список информационных баз, рабочих серверов, администраторов кластера, настроек. Это не кэш, это конфигурация сервера.
  • 🗂 Журнал регистрации серверных баз. В клиент-серверном варианте он лежит не в СУБД, а в файлах на сервере 1С.
  • 🔎 Индекс полнотекстового поиска — его можно перестроить, но на большой базе это долго.
  • 🧠 Сеансовые данные (папки snccntx…) — временное состояние сеансов и служебные данные кластера. Именно это обычно и называют «кэшем сервера».
  • 🧾 Временные файлы рабочих процессов — в каталоге временных файлов пользователя, от имени которого запущена служба.

У клиента своя история. Кэш конфигурации на компьютере пользователя лежит в его профиле Windows и чистится параметром запуска /ClearCache или удалением папок в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Серверный кэш этим параметром не очищается.

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

Где находится кэш сервера 1С в Windows

По умолчанию служба «Агент сервера 1С:Предприятия 8.3» запускается от пользователя USR1CV8, а каталог кластера — C:\Program Files\1cv8\srvinfo. Внутри вы найдёте папку reg_1541, а в ней — всё, что относится к кластеру.

Фактический путь проверьте так:

  1. Откройте services.msc.
  2. Найдите службу агента сервера 1С (в английской локали она называется 1C:Enterprise 8.3 Server Agent с указанием разрядности).
  3. Откройте её свойства и посмотрите строку «Исполняемый файл».
  4. В конце строки найдите параметр -d — после него указан каталог кластера. Рядом стоят -port (порт агента, обычно 1540) и -regport (порт менеджера кластера, обычно 1541).

Ту же строку можно посмотреть в реестре, в ключе службы:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<имя службы>\ImagePath

Или из командной строки:

sc query state= all | findstr /i "1C"
sc qc "<имя службы>"

Если -regport равен 2541, папка будет называться reg_2541. На одном компьютере может работать несколько агентов на разных портах — у каждого свой каталог и свой reg_*.

Каталог часто переносят на отдельный диск, например D:\1C\srvinfo. Удалять «что-то похожее» в Program Files, не сверившись с параметром -d, бессмысленно: вы почистите старую копию, а сервер продолжит работать с прежними файлами.

Временные файлы службы

Рабочие процессы rphost пишут временные файлы в каталог TEMP пользователя, от которого запущена служба. Для USR1CV8 это обычно C:\Users\USR1CV8\AppData\Local\Temp. После аварийных завершений там остаются файлы, и папка может разрастаться до гигабайтов. Их удаляют при остановленной службе — так же, как сеансовые данные.

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

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

/home/usr1cv8/.1cv8/1C/1cv8/reg_1541

Структура внутри та же, что в Windows: реестр кластера, папки баз, папки snccntx….

Как убедиться в пути на конкретном сервере:

ps -ef | grep ragent

В строке процесса ragent найдите параметр -d. Если его нет — работает путь по умолчанию.

Имя службы зависит от версии платформы и способа установки. В свежих сборках 8.3 служба оформлена юнитом systemd, и в имени есть номер версии. Найдите её так:

systemctl list-units --all | grep -i 1cv8

На старых установках встречается init-скрипт srv1cv83 в /etc/init.d/.

Права важны. Все файлы в каталоге кластера должны принадлежать usr1cv8. Если вы копировали или восстанавливали что-то из-под root, верните владельца командой chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8, иначе агент не стартует или не сможет писать сеансовые данные. Проверьте имя группы в своей системе командой id usr1cv8.

Что лежит в reg_1541 и что можно удалять

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

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

Папка с именем-GUID базы соответствует идентификатору информационной базы в кластере. Узнать его можно в консоли администрирования серверов или через rac infobase summary list — утилита покажет идентификаторы и имена баз.

Совет «удалите всё содержимое srvinfo» встречается часто. Он рабочий только в одном случае: если вы готовы заново регистрировать все базы, администраторов кластера и настройки рабочих серверов, а журналы регистрации не нужны. В рабочей среде так не делают.

Перед любой чисткой скопируйте 1CV8Clst.lst в отдельную папку. Если что-то пойдёт не так, его достаточно вернуть на место при остановленной службе.

Как очистить кэш сервера 1С: вручную и скриптом

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

Ручная очистка в Windows

  1. Попросите пользователей выйти из баз или заблокируйте начало сеансов в консоли кластера.
  2. Скопируйте 1CV8Clst.lst в резервную папку.
  3. Остановите службу агента сервера 1С в services.msc.
  4. В диспетчере задач убедитесь, что не осталось процессов ragent, rmngr, rphost. Если какой-то завис — дождитесь завершения, а не убивайте его сразу.
  5. Удалите все папки snccntx* внутри reg_1541.
  6. При необходимости очистите TEMP пользователя службы.
  7. Запустите службу и проверьте вход в одну-две базы.

Скрипт для Windows

Скрипт удобно запускать вручную или через Планировщик заданий. Имя службы и путь подставьте свои — сверьте их по разделу про Windows выше.

@echo off
set "SRV=1C:Enterprise 8.3 Server Agent (x86-64)"
set "REG=C:\Program Files\1cv8\srvinfo\reg_1541"
set "BAK=D:\backup\1c-cluster"

if not exist "%BAK%" mkdir "%BAK%"
copy /y "%REG%\1CV8Clst.lst" "%BAK%\1CV8Clst.lst"

net stop "%SRV%"
timeout /t 30 /nobreak

for /d %%D in ("%REG%\snccntx*") do rd /s /q "%%D"

net start "%SRV%"

net stop принимает и системное имя службы, и отображаемое. Пауза в 30 секунд даёт рабочим процессам завершиться. Если net stop вернул ошибку, не продолжайте чистку — сначала разберитесь, почему служба не останавливается.

Очистка на Linux

SRV=$(systemctl list-units --all --plain --no-legend | grep -i 1cv8 | awk '{print $1}')
REG=/home/usr1cv8/.1cv8/1C/1cv8/reg_1541

cp "$REG/1CV8Clst.lst" /root/1CV8Clst.lst.bak
systemctl stop "$SRV"
sleep 30
pgrep -l -u usr1cv8 'ragent|rmngr|rphost' && echo "Процессы ещё работают, остановка" && exit 1
rm -rf "$REG"/snccntx*
systemctl start "$SRV"

Перед запуском выполните первую строку отдельно и посмотрите, что попало в SRV. Если на сервере установлено несколько версий платформы или работает служба RAS, команда найдёт несколько юнитов — тогда впишите имя нужной службы агента вручную.

Регулярная очистка по расписанию

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

  • 🗓 Плановая очистка snccntx* — после обновления платформы и при проблемах, о которых ниже.
  • 🕒 Если всё же автоматизируете — раз в неделю, ночью в выходной, вне окна резервного копирования и регламентных заданий.
  • 📬 Скрипт должен проверять, что служба поднялась, и сообщать о сбое. Иначе об остановленном сервере вы узнаете от бухгалтерии в понедельник.

Признаки того, что проблема в кэше сервера

Кэш виноват не так часто, как кажется. Прежде чем останавливать сервер, проверьте симптом по таблице.

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

Чтобы быстро понять, что занимает место, на Windows посмотрите размер папок в reg_1541 через свойства, а на Linux выполните:

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

Если вверху списка папка базы, загляните внутрь: почти всегда растёт 1Cv8Log.

Как обслуживать сервер, чтобы кэш не мешал

Проблемы с кэшем почти всегда — следствие чего-то другого: аварийной остановки, нехватки места, неаккуратного обновления. Поэтому профилактика — это порядок в администрировании сервера в целом.

  • 💾 Свободное место. Держите каталог кластера на диске, где свободно хотя бы 20–30% объёма. При заполнении диска сеансовые данные повреждаются первыми.
  • 🔌 Корректная остановка. Перед перезагрузкой Windows останавливайте службу 1С вручную. Жёсткое выключение — главный источник битых snccntx.
  • 📦 Копия реестра кластера. Включите 1CV8Clst.lst в ежедневное резервное копирование. Файл маленький, а сэкономит часы восстановления.
  • 📜 Журнал регистрации. Настройте периодичность разделения журнала и раз в квартал–полгода сокращайте старые периоды, предварительно выгрузив их.
  • 🧪 Технологический журнал. Включайте его на время расследования и ограничивайте срок хранения в logcfg.xml параметром history. Забытый ТЖ за месяц легко съедает десятки гигабайт.
  • ♻️ Перезапуск рабочих процессов. В свойствах рабочего сервера задайте разумный допустимый объём памяти процессов — тогда кластер сам перезапускает разросшийся rphost без участия администратора и без чистки кэша.
  • 🔄 Обновление платформы. После смены версии на сервере удаляйте snccntx* при остановленной службе и чистите кэш у клиентов. Так сеансовые данные старой версии не мешают новой.
Перед очисткой кэша сервера
Выполнено: 0 / 7

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

Пропадут ли данные бухгалтерии после очистки кэша сервера?
Нет. Документы и справочники хранятся в СУБД — MS SQL или PostgreSQL. Удаление snccntx* затрагивает только служебное состояние сеансов. Потеряется лишь то, что пользователи не успели записать до остановки службы.
Нужно ли чистить кэш на каждом рабочем сервере кластера?
Сеансовые данные хранятся на каждом сервере в его каталоге кластера. Если в кластере несколько рабочих серверов, останавливайте службы на всех и чистите snccntx* на каждом, иначе на другом сервере останутся старые данные.
Чем серверный кэш отличается от кэша на терминальном сервере?
На терминальном сервере пользователи работают как клиенты, и их кэш лежит в профилях: C:\Users<пользователь>\AppData\Roaming\1C\1cv8 и \AppData\Local\1C\1cv8. Это клиентский кэш, его можно чистить у одного пользователя без остановки сервера 1С.
Можно ли удалить snccntx без остановки службы?
Нельзя. Работающий кластер держит эти файлы открытыми. Часть удалится, часть нет, а сервер останется с неполными сеансовыми данными. Это хуже, чем ничего не делать.
Что делать, если после очистки служба не запускается?
Проверьте права пользователя службы на каталог кластера и наличие 1CV8Clst.lst. Если файл пропал или повреждён, верните его из копии при остановленной службе. Затем посмотрите журнал событий Windows или journalctl на Linux — там будет конкретная причина.