Серверный кэш 1С: что удалять, где лежит и как не сломать кластер

· 9 мин

Содержание

Серверный кэш 1С чистится так: остановить службу агента сервера , удалить в каталоге кластера (reg_1541) временные папки snccntx* и sess_*, запустить службу снова. Базы, файлы 1CV8Clst.lst и журналы регистрации при этом не трогают.

Без остановки службы удалять нельзя. Агент держит эти файлы открытыми, а вырванный из-под него файл может оставить кластер в нерабочем состоянии. Ниже — где что лежит, как чистить на Windows и Linux, как поставить уборку на расписание и что делать, если чистка не помогла.

Когда чистка серверного кэша действительно нужна

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

  • 🐌 Пользователи жалуются на тормоза после обновления платформы или конфигурации, а нагрузка на сервер нормальная.
  • 🔒 Сеансы «зависают» и не закрываются штатно, в консоли кластера висят призраки.
  • 💾 Каталог кластера разросся до десятков гигабайт, на диске заканчивается место.
  • ⚠️ После аварийной перезагрузки сервера появились странные ошибки доступа к базе или к данным сеанса.
  • 🔄 Вы перенесли базу на другой сервер или сменили версию платформы.

Если тормозит одна база, а остальные работают нормально, чаще виноваты блокировки, регламентные задания или сама СУБД. Кэш там вторичен — сначала проверьте их.

Когда чистить не нужно

  • Сервер работает ровно, а вы просто хотите «освежить» систему.
  • Идёт рабочий день и в базах сидят люди. Чистка обрывает все сеансы.
  • Вы не знаете, что именно лежит в папке. Сначала посмотрите, потом удаляйте.

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

Данные кластера лежат в каталоге сервера (srvinfo). Внутри — папка с номером порта менеджера кластера. По умолчанию порт 1541, поэтому папка называется reg_1541.

СистемаТипичный путь
WindowsC:\Program Files\1cv8\srvinfo\reg_1541
Windows (32-битная платформа)C:\Program Files (x86)\1cv8\srvinfo\reg_1541
Linux/home/usr1cv8/.1cv8/1C/1cv8/reg_1541

Точный путь зависит от того, как ставили сервер. Каталог задан в параметрах службы агента. На Windows откройте services.msc, найдите службу агента сервера 1С, зайдите в свойства и посмотрите в строку запуска параметр -d. На Linux его видно в файле службы или в выводе systemctl cat.

Что внутри reg_1541:

  • 📁 Папки с длинными именами вида GUID — по одной на каждую информационную базу.
  • 📄 1CV8Clst.lst — реестр кластера. Не удаляйте.
  • 📁 snccntx… — контексты сеансов. Это и есть то, что обычно называют серверным кэшем.
  • 📁 sess_… — данные конкретных сеансов.
  • 📁 1Cv8Log внутри папки базы — журнал регистрации. Это история событий, а не кэш.
  • 📄 1Cv8.lst, 1CV8Reg.lst — служебные списки. Не трогайте.

Разделяйте серверный кэш и клиентский. Клиентский лежит у пользователя в профиле, в каталогах 1C\1Cv8 под AppData\Local и AppData\Roaming. Серверный — только на машине, где крутится кластер.

Как оценить, что разрослось

Прежде чем удалять, посмотрите размеры. На Windows откройте свойства reg_1541 или выполните в PowerShell:

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

На Linux хватит du -sh * внутри каталога. Если самая тяжёлая папка — это 1Cv8Log с журналом регистрации, чистка кэша место не освободит. Тогда нужно сокращать журнал: настраивать срок хранения и размер файлов в самой базе, а не удалять папку руками.

Для ориентира: на сервере с десятком баз и сотней пользователей временные папки сеансов за месяц-два обычно занимают от нескольких сотен мегабайт до нескольких гигабайт. Десятки гигабайт — повод разбираться, почему сеансы не закрываются.

Чистка кэша на Windows-сервере пошагово

Работайте вне часов нагрузки. Лучше — вечером или в окно обслуживания.

1. Подготовьтесь

  1. Предупредите пользователей. Сеансы будут разорваны.
  2. Убедитесь, что регламентные задания и выгрузки не идут прямо сейчас.
  3. Сделайте копию reg_1541 целиком или хотя бы файла 1CV8Clst.lst. Копия — это минута, а восстановление кластера без неё может занять день.
  4. Запишите, какие базы подключены к кластеру.

2. Остановите службу агента

Через services.msc найдите службу агента сервера 1С:Предприятия 8.3 и нажмите «Остановить». Либо из консоли с правами администратора:

sc query state= all | findstr /i "1C"
net stop "Имя службы из первой команды"

Первая команда поможет найти точное имя. Во второй подставьте его в кавычках. Затем проверьте в диспетчере задач, что процессы ragent, rmngr и rphost исчезли. Если какой-то завис, завершите вручную.

3. Удалите временные данные

Откройте reg_1541. Внутри этого каталога удалите:

  • все папки snccntx*;
  • все папки sess_*.

Можно сделать это руками, а можно командой:

cd /d "C:\Program Files\1cv8\srvinfo\reg_1541"
for /d %%i in (snccntx*) do rd /s /q "%%i"
for /d %%i in (sess_*) do rd /s /q "%%i"

В .bat-файле знаки процента удваиваются, как здесь. В командной строке вручную пишите один %.

4. Запустите службу и проверьте

net start "Имя службы"

Подождите минуту-две, пока поднимутся рабочие процессы. Затем:

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

Клиентский кэш — отдельной строкой

Если проблема воспроизводится только у одного пользователя, чистите его кэш, а не серверный. Закройте 1С и удалите содержимое каталогов 1C\1Cv8 в AppData\Local и AppData\Roaming этого профиля. Те же папки можно вычистить через ключ запуска /ClearCache:

"C:\Program Files\1cv8\common\1cestart.exe" /ClearCache

Путь к файлу запуска зависит от установки. Проверьте свой.

Чистка серверного кэша 1С на Linux

Логика та же, отличаются команды и права. Работайте от пользователя с правами sudo.

  1. Остановите службу. Имя зависит от версии платформы; для 8.3 обычно это srv1cv83.
sudo systemctl stop srv1cv83
  1. Убедитесь, что процессы остановились:
ps aux | grep -E "ragent|rmngr|rphost" | grep -v grep

Пусто — можно продолжать. Остались процессы — sudo kill по их идентификаторам.

  1. Перейдите в каталог кластера и удалите временное:
cd /home/usr1cv8/.1cv8/1C/1cv8/reg_1541
sudo rm -rf snccntx* sess_*

Перед rm -rf проверьте через pwd, что вы в нужном каталоге. Ошибка в пути с rm -rf обходится дорого.

  1. Запустите службу и проверьте статус:
sudo systemctl start srv1cv83
sudo systemctl status srv1cv83

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

Чистка без остановки сервера: закрыть сеансы через rac

Иногда останавливать службу нельзя, а проблема — в зависших сеансах. Тогда достаточно закрыть их через утилиту администрирования rac. Она идёт в комплекте с сервером. Сервис ras должен быть запущен.

rac cluster list
rac session list --cluster=<идентификатор кластера>
rac session terminate --cluster=<идентификатор кластера> --session=<идентификатор сеанса>

Идентификаторы берите из вывода первых двух команд. Это мягче полной чистки: удаляются только проблемные сеансы, остальные работают.

Расписание: автоматическая очистка

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

Windows: планировщик заданий

Сохраните скрипт, например clear_1c_cache.bat:

@echo off
net stop "Имя службы"
timeout /t 20 /nobreak >nul
cd /d "C:\Program Files\1cv8\srvinfo\reg_1541"
for /d %%i in (snccntx*) do rd /s /q "%%i"
for /d %%i in (sess_*) do rd /s /q "%%i"
net start "Имя службы"

Создайте задание в планировщике: запуск от имени администратора, с наивысшими правами, раз в неделю в ночное окно. Паузу в 20 секунд после остановки оставьте: службе нужно время завершить процессы.

Linux: cron

Скрипт /usr/local/bin/clear_1c_cache.sh:

#!/bin/bash
systemctl stop srv1cv83
sleep 20
cd /home/usr1cv8/.1cv8/1C/1cv8/reg_1541 || exit 1
rm -rf snccntx* sess_*
systemctl start srv1cv83

Сделайте его исполняемым и добавьте в crontab root, например воскресенье, 03:00:

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

Строка || exit 1 важна: если каталога нет, скрипт остановится и не начнёт удалять файлы там, где вы не планировали.

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

Перед запуском в рабочем режиме прогоните сценарий на тестовом сервере или хотя бы в выходной. Проверьте три вещи: служба остановилась, нужные папки удалены, служба поднялась без вмешательства. Первые две недели смотрите журнал планировщика или /var/log/syslog, чтобы вовремя заметить сбой.

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

Типичные ошибки при очистке

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

Что не удалять никогда

  • 1CV8Clst.lst и папки с GUID баз.
  • Журнал регистрации 1Cv8Log, если он нужен для расследований.
  • Файловые базы, лежащие рядом на том же диске. Серверный кэш к ним отношения не имеет.

Что делать, если чистка не помогла

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

  • 🔍 Посмотрите журнал регистрации и технологический журнал: там видно, какие вызовы тормозят.
  • 🗄 Проверьте СУБД: обновление статистики, перестроение индексов, свободное место под временные файлы.
  • 🧠 Оцените память: рабочие процессы rphost перегружены, когда на один процесс приходится слишком много сеансов.
  • 🔄 Перезапустите рабочие процессы через консоль кластера: это мягче остановки службы.
  • 📦 Сверьте версию платформы на сервере и клиентах. Большое расхождение даёт странные отказы.
  • 🧪 Сделайте тестовую копию базы и воспроизведите проблему на ней. Если на копии всё в порядке, ищите причину в окружении.
Чистка кэша без неприятностей
Выполнено: 0 / 5

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

Можно ли чистить серверный кэш 1С при работающих пользователях?
Нет. Для удаления файлов нужно остановить службу, а это разорвёт все сеансы. Закрыть отдельные сеансы без остановки можно через rac.
Удалятся ли данные из базы?
Нет. Базы хранятся в СУБД (или в файле базы), а не в snccntx* и sess_*. Исчезнут только временные данные сеансов.
Как часто нужно чистить кэш?
По необходимости. На стабильном сервере хватает чистки при обновлении платформы или после аварии. Регулярная чистка по расписанию нужна тестовым и перегруженным серверам.
Папка reg_1541 называется по-другому. Это нормально?
Да. Число в названии — порт менеджера кластера. Если вы меняли порт при установке, имя будет другим.
Нужно ли чистить кэш после обновления платформы?
Не обязательно. Но при странном поведении после перехода на новую версию чистка — один из первых простых шагов.
Что быстрее: чистка кэша или перезапуск службы?
Перезапуск быстрее, но не удаляет файлы. Если проблема в накопившихся данных, он не поможет.