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

· 11 мин

Содержание

Чтобы очистить кэш 1С 8.3 на сервере, остановите службу агента сервера 1С, удалите папки snccntx* внутри каталога кластера (srvinfo\reg_1541) и запустите службу снова. Файлы .lst в этом каталоге не трогайте: в них хранится реестр кластера и список баз.

Частое заблуждение — что параметр запуска /ClearCache или удаление папок в %APPDATA%\1C\1cv8 чистят кэш на сервере. Нет, это клиентский кэш на компьютере пользователя. Серверный кэш живёт в каталоге кластера, и добраться до него можно только при остановленной службе.

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

Сервер 1С хранит на диске контексты сеансов, кэш конфигураций и служебные данные рабочих процессов. Обычно платформа сама следит за этим хозяйством. Но после сбоев и обновлений в каталоге остаются «осиротевшие» данные, и сервер начинает вести себя странно.

Симптомы, при которых очистка оправдана:

  • 🔁 после обновления конфигурации пользователи видят старые формы или старое поведение, хотя в Конфигураторе всё обновлено;
  • ⚠️ ошибки при входе в базу, которые пропадают после перезапуска службы, но возвращаются;
  • 💾 каталог srvinfo вырос до десятков гигабайт, а баз в кластере немного;
  • 🐢 базы стали открываться заметно медленнее после аварийного отключения сервера или переполнения диска;
  • 🔄 переход на новую версию платформы, после которого остались данные старых рабочих процессов.

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

  • ❌ «для профилактики» каждую ночь. После очистки первый вход в каждую базу будет долгим: сервер заново строит кэш;
  • ❌ при ошибке у одного пользователя на одном компьютере. Здесь почти всегда виноват клиентский кэш;
  • ❌ при проблемах с блокировками и зависшими сеансами. Их решают завершением сеансов, а не удалением файлов.

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

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

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

Типичные пути

ОСПуть по умолчанию
Windows (служба от USR1CV8, свежая установка)C:\Program Files\1cv8\srvinfo
Windows (старые установки)C:\Users\USR1CV8\AppData\Local\1C\1cv8\srvinfo
Linux/home/usr1cv8/.1cv8/1C/1cv8

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

Посмотрите командную строку службы. В PowerShell:

Get-CimInstance Win32_Service |
  Where-Object { $_.Name -like '1C*' } |
  Select-Object Name, StartName, PathName | Format-List

В поле PathName найдите параметр -d "..." — это и есть каталог кластера. Там же видно имя службы, оно понадобится для скриптов. Обычно это 1C:Enterprise 8.3 Server Agent (x86-64), но при установке нескольких версий в имени может быть номер платформы.

Как узнать путь в Linux

ps -ef | grep [r]agent

В выводе тоже ищите -d. Если параметра нет, используется домашний каталог пользователя usr1cv8.

Что лежит внутри

Внутри каталога кластера есть папка reg_1541 (номер — порт менеджера кластера; при другом порте будет reg_<порт>). Её содержимое:

ОбъектЧто этоУдалять?
1CV8Clst.lstреестр кластера: базы, рабочие серверы, администраторыНикогда
другие файлы *.lstслужебные списки кластераНет
папки snccntx<GUID>контексты сеансов и кэш рабочих процессовДа, это и есть кэш
папки с GUID базкэш конфигурации базы, индекс полнотекстового поиска, журнал регистрацииТолько точечно (способ 4)

На уровень выше, в самом srvinfo, лежит srvribrg.lst — список кластеров центрального сервера. Его тоже не удаляют.

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

Самый понятный вариант: несколько щелчков в Проводнике или пара команд в консоли.

Перед началом

  • 📌 Сделайте копию файла 1CV8Clst.lst в отдельную папку. Если что-то пойдёт не так, кластер восстанавливается из неё за минуту.
  • 📌 Убедитесь, что есть свежие резервные копии баз.
  • 📌 Посмотрите в консоли администрирования, кто сейчас работает, и завершите сеансы.

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

  1. Откройте services.msc, найдите службу «Агент сервера 1С:Предприятия 8.3» (в английском варианте — 1C:Enterprise 8.3 Server Agent).
  2. Остановите службу. Подождите 20–30 секунд.
  3. Откройте Диспетчер задач и проверьте, что процессы ragent.exe, rmngr.exe и rphost.exe исчезли. Если какой-то завис, завершите его вручную.
  4. Перейдите в каталог кластера, например C:\Program Files\1cv8\srvinfo\reg_1541.
  5. Выделите все папки, имя которых начинается на snccntx, и удалите их.
  6. Запустите службу.
  7. Зайдите в одну из баз и убедитесь, что вход работает. Первый запуск будет дольше обычного.

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

Имя юнита зависит от версии. С платформы 8.3.21 служба регистрируется через systemd с номером версии в имени. Узнайте его:

systemctl list-units --type=service --all | grep -i srv1cv8

Дальше (имя юнита подставьте своё):

sudo systemctl stop srv1cv8-8.3.24.1548@default.service
pgrep -a rphost        # должно быть пусто
sudo rm -rf /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/snccntx*
sudo systemctl start srv1cv8-8.3.24.1548@default.service

На старых установках с init-скриптом команды выглядят как sudo service srv1cv83 stop и sudo service srv1cv83 start.

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

Способ 2. Консоль администрирования кластера: что она может

Прямой кнопки «очистить кэш» в консоли администрирования серверов 1С нет. Удалить файлы можно только при остановленной службе, а консоль работает через эту службу.

Зато консоль решает часть задач, ради которых обычно чистят кэш, без остановки сервера:

  • 👤 Завершение сеансов. Узел кластера → «Информационные базы» → нужная база → «Сеансы». Выделите сеансы и удалите их через контекстное меню. Это помогает, когда «застрял» один пользователь или одна база.
  • 🔄 Автоматический перезапуск рабочих процессов. В свойствах кластера есть поле «Интервал перезапуска» (в секундах). Значение 86400 означает перезапуск раз в сутки. Новый процесс стартует с чистой памятью, старый завершается, когда отработает свои соединения.
  • 📊 Контроль памяти. В тех же свойствах задаётся допустимый объём памяти рабочих процессов. При превышении процесс перезапускается.

Через утилиту rac можно посмотреть то же самое из командной строки: rac cluster list покажет кластеры и их идентификаторы, rac session list --cluster=<uuid> — сеансы. Параметры остальных команд смотрите в справке rac help.

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

Способ 3. Скрипт очистки кэша: остановка, очистка, запуск, лог

Если чистить кэш приходится регулярно, например после каждого планового обновления, удобнее один скрипт с журналом. Логика везде одинаковая: остановить службу → дождаться завершения процессов → удалить snccntx* → запустить службу → записать результат.

Скрипт для Windows (bat)

@echo off
setlocal
rem === Настройки: проверьте имя службы и путь ===
set "SRV=1C:Enterprise 8.3 Server Agent (x86-64)"
set "CLST=C:\Program Files\1cv8\srvinfo\reg_1541"
set "LOG=C:\Scripts\clear_1c_cache.log"

echo [%date% %time%] Stop service >> "%LOG%"
net stop "%SRV%" >> "%LOG%" 2>&1
timeout /t 30 /nobreak >nul

rem Если рабочие процессы зависли, завершаем принудительно
taskkill /f /im rphost.exe >> "%LOG%" 2>&1
taskkill /f /im rmngr.exe  >> "%LOG%" 2>&1

echo [%date% %time%] Delete snccntx folders >> "%LOG%"
for /d %%D in ("%CLST%\snccntx*") do (
    echo   %%D >> "%LOG%"
    rd /s /q "%%D"
)

echo [%date% %time%] Start service >> "%LOG%"
net start "%SRV%" >> "%LOG%" 2>&1
echo [%date% %time%] Done, errorlevel=%errorlevel% >> "%LOG%"
endlocal

Сообщения в логе латиницей сделаны намеренно: кириллица в bat-файлах легко превращается в «кракозябры» из-за кодировки консоли.

Запускайте скрипт от имени администратора. Для расписания создайте задание в Планировщике заданий Windows с опцией «Выполнять с наивысшими правами» и временем, когда в базах никого нет.

Скрипт для Linux (bash)

#!/bin/bash
UNIT="srv1cv8-8.3.24.1548@default.service"   # своё имя юнита
CLST="/home/usr1cv8/.1cv8/1C/1cv8/reg_1541"
LOG="/var/log/clear_1c_cache.log"

log() { echo "[$(date '+%F %T')] $*" >> "$LOG"; }

log "Stop $UNIT"
systemctl stop "$UNIT"
sleep 20

if pgrep -x rphost >/dev/null; then
    log "rphost still alive, killing"
    pkill -9 -x rphost
fi

log "Delete snccntx folders"
find "$CLST" -maxdepth 1 -type d -name 'snccntx*' -print -exec rm -rf {} + >> "$LOG" 2>&1

log "Start $UNIT"
systemctl start "$UNIT"
systemctl is-active --quiet "$UNIT" && log "Service is active" || log "ERROR: service did not start"

Сохраните как /usr/local/bin/clear_1c_cache.sh, выполните chmod +x и добавьте в cron пользователя root, например на 03:00 в воскресенье: 0 3 * * 0 /usr/local/bin/clear_1c_cache.sh.

Скрипт обрывает все сеансы без предупреждения. Регламентные задания, обмены и фоновые выгрузки, запущенные в это время, тоже прервутся. Сверьте расписание с ними.

Что проверять в логе

  • ✅ служба остановилась без ошибки и запустилась снова;
  • ✅ в списке удалённых есть только папки snccntx…;
  • ✅ последняя строка — «Service is active» или код возврата 0 в Windows.

Если служба не стартовала, это видно утром по логу, а не по звонкам пользователей.

Способ 4. Кэш одной информационной базы

Иногда сбоит только одна база, например после неудачного обновления конфигурации. Тогда можно почистить данные именно её, не трогая остальные. Но служба агента всё равно останавливается: файлы заняты рабочими процессами.

  1. Узнайте идентификатор базы. Через rac: сначала rac cluster list, затем rac infobase summary list --cluster=<uuid кластера>. В выводе у каждой базы есть поле infobase с GUID и поле name.
  2. Остановите службу агента.
  3. В каталоге reg_1541 найдите папку с этим GUID.
  4. Внутри удалите служебные папки кэша конфигурации. Папку 1Cv8Log (журнал регистрации) и 1Cv8FTxt (индекс полнотекстового поиска) не трогайте, если не хотите потерять журнал и перестраивать индекс.
  5. Запустите службу и войдите в базу.

Если не уверены, какие подпапки внутри — кэш, переименуйте папку базы целиком, например добавьте в конец _old, и запустите службу. Сервер создаст папку заново. Убедитесь, что база работает, затем перенесите из старой папки 1Cv8Log, если журнал регистрации нужен, и только потом удаляйте _old.

Индекс полнотекстового поиска после потери восстанавливается в самой базе. Надёжный путь для любой конфигурации: Главное меню → Все функции → Стандартные → Управление полнотекстовым поиском, кнопка «Обновить индекс». Если пункта «Все функции» нет, включите его в параметрах программы. На крупной базе это занимает от десятков минут до нескольких часов.

А если база файловая

У файловой базы серверного кэша нет. Кэш хранится на каждом компьютере пользователя в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8, в папках с GUID. На терминальном сервере это свой набор папок в профиле каждого пользователя. Чистят его закрытием 1С и удалением этих папок или запуском с параметром /ClearCache.

Ошибки при очистке кэша, которые дорого обходятся

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

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

Как сделать, чтобы кэш реже доставлял проблемы

Разросшийся и сбойный кэш чаще следствие, чем причина. Вот что снижает потребность в очистке:

  • 🛡️ Исключения в антивирусе. Добавьте каталог кластера и папку временных файлов пользователя службы в исключения проверки. Антивирус, блокирующий файлы во время записи, — частый источник повреждённых контекстов.
  • 💽 Свободное место. Держите на диске с srvinfo запас не меньше 10–15 ГБ. Переполнение диска во время работы оставляет недописанные файлы.
  • ⚡ Быстрый диск. Каталог кластера лучше разместить на SSD. При переносе укажите новый путь в параметре -d службы и скопируйте содержимое целиком, сохранив права.
  • 🔄 Перезапуск рабочих процессов по интервалу в свойствах кластера вместо еженощной очистки файлов.
  • 📜 Технологический журнал под контролем. Если включали его для диагностики, не забудьте выключить или ограничить срок хранения: логи легко занимают больше места, чем сам кэш.
  • 🧩 Порядок при смене платформы. После установки новой версии сервера удалите старую службу, проверьте, что работает одна, и только потом почистите snccntx*.
После очистки проверьте
Выполнено: 0 / 5

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

Сколько времени занимает очистка серверного кэша?
Сама очистка — 1–3 минуты: остановка службы, удаление папок, запуск. Дольше идёт первый вход в каждую базу после очистки, на крупной конфигурации это 1–2 минуты вместо обычных секунд.
Можно ли почистить кэш, не останавливая сервер 1С?
Файлы — нет, они заняты рабочими процессами. Без остановки можно только завершить сеансы и перезапустить рабочие процессы через настройки кластера.
Удаляются ли при очистке данные бухгалтерии?
Нет. Данные баз хранятся в СУБД (MS SQL, PostgreSQL), а не в каталоге кластера. Папки snccntx содержат только служебную информацию сеансов.
Нужно ли после очистки кэша на сервере чистить кэш у пользователей?
Если проблема была в устаревших формах после обновления, да, иногда нужно и то и другое. Клиентский кэш чистится запуском 1С с параметром /ClearCache.
Как часто запускать скрипт очистки по расписанию?
Обычно хватает запуска после плановых обновлений конфигураций и платформы. Еженедельная очистка оправдана, только если без неё сервер стабильно деградирует, и тогда стоит искать причину.