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

· 9 мин

Содержание

Почистить кэш серверной 1С можно двумя путями: удалить временные каталоги кластера и пользовательские кэши при остановленной службе либо завершить зависшие сеансы через утилиту RAC без остановки сервера. Первый способ даёт полную очистку, второй безопасен в рабочее время. Какой выбрать, зависит от того, что именно у вас ломается.

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

Что на сервере называют кэшем и когда его чистить

«Кэш сервера» в 1С — это не один каталог, а несколько мест с разными правилами. Путать их опасно: в одном лежит мусор, в другом — реестр кластера, без которого базы пропадут из списка.

ЧтоГде лежитМожно удалять
Кэш пользователя (формы, настройки окон)%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8 учётной записи, под которой работает клиент или службаДа, при закрытом 1С
Временные файлы серверных процессов%TEMP% учётной записи службы агента сервераДа, при остановленной службе
Файлы сеансовых данных кластеракаталоги snccntx… внутри каталога кластера (имя вида reg_1541)Только при остановленной службе
Реестр кластерафайлы 1CV8Clst.lst и остальное содержимое reg_1541Нет, это конфигурация кластера
Файлы базы (файловый вариант)каталог с 1Cv8.1CDНет

Когда чистка оправдана:

  • 🔧 после обновления платформы или конфигурации, если клиенты видят старые формы или получают ошибки открытия;
  • 🐌 при постепенной деградации скорости без видимой причины в СУБД;
  • 💾 когда на диске сервера заканчивается место из-за каталогов snccntx… и временных файлов;
  • 🧱 при странных сообщениях вроде «Ошибка при выполнении операции с информационной базой» после аварийного завершения процессов.

Если база просто медленная, кэш чаще всего ни при чём. Сначала загляните в загрузку процессора и памяти на rphost, в блокировки СУБД и в размер журнала регистрации. Чистка кэша лечит не всё.

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

Подготовка: что сделать до первого удаления

Три минуты на подготовку сэкономят вечер на восстановлении.

  1. Узнайте, под какой учётной записью работает служба «Агент сервера 1С:Предприятия». Откройте оснастку служб Windows и посмотрите столбец «Вход от имени». Обычно это USR1CV8 или отдельный сервисный пользователь. Именно в его профиле лежит серверный кэш.
  2. Найдите каталог кластера. Путь указан в параметрах запуска службы после ключа -d, а порт кластера по умолчанию — 1541. Папка называется reg_1541.
  3. Сделайте копию каталога кластера, если собираетесь удалять что-то внутри него. Достаточно архива: файлы небольшие.
  4. Предупредите пользователей. Задайте время и сообщение через консоль администрирования или RAC (ниже).
  5. Убедитесь, что есть свежая выгрузка или резервная копия баз. Чистка кэша данные не трогает, но аварии случаются из-за ошибки в пути.

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

Для проверки себя пригодится короткий список.

Перед очисткой кэша сервера
Выполнено: 0 / 6

Мягкий способ: завершить сеансы и сбросить процессы через RAC

Утилита rac.exe лежит в каталоге bin установленной платформы рядом с ras.exe. Она подключается к серверу администрирования ras и управляет кластером из командной строки. Остановка службы не нужна.

Сначала запустите сервер администрирования, если он не работает :

ras.exe cluster --port=1545 localhost:1540

Дальше все команды выполняются с адресом localhost:1545. Узнайте идентификатор кластера:

rac.exe localhost:1545 cluster list

В ответе будет строка cluster с длинным GUID. Подставьте его вместо <кластер> в командах ниже.

Посмотреть сеансы и найти зависшие

rac.exe localhost:1545 session list --cluster=<кластер>

Для каждого сеанса выводятся пользователь, приложение, время начала и последней активности. Зависшие обычно видны по «Фоновое задание» или клиенту, который давно не проявлял активности.

Завершить сеанс

rac.exe localhost:1545 session terminate --cluster=<кластер> --session=<идентификатор сеанса>

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

Закрыть вход в базу на время чистки

Чтобы никто не зашёл обратно, пока вы работаете, запретите сеансы:

rac.exe localhost:1545 infobase update --cluster=<кластер> --infobase=<идентификатор базы> --sessions-deny=on --scheduled-jobs-deny=on --denied-message="Идёт обслуживание" --infobase-user=<админ> --infobase-pwd=<пароль>

Идентификатор базы покажет команда infobase summary list --cluster=<кластер>. После работы верните значения off.

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

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

Полная ручная очистка временных каталогов сервера

Этот способ нужен, когда место на диске занято файлами, а сеансы уже закрыты. Порядок такой.

  1. Закройте доступ к базам (RAC или консоль администрирования) и завершите все сеансы.
  2. Остановите службу «Агент сервера 1С:Предприятия». Через оснастку служб или командой в cmd от администратора:
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"

Точное имя службы зависит от версии платформы. Посмотрите его в списке служб, не копируйте вслепую.

  1. Убедитесь, что процессы rphost, rmngr и ragent завершились. Если остались, закройте их через диспетчер задач.
  2. Очистите временные файлы учётной записи службы: каталог %TEMP% этого пользователя. Если служба идёт от USR1CV8, ищите профиль под C:\Users\USR1CV8 или каталог профиля на другом диске.
  3. Откройте каталог кластера reg_1541. Удалять можно подкаталоги snccntx…. Они создаются заново при старте. Файл 1CV8Clst.lst и остальные служебные файлы не трогайте.
  4. Запустите службу и проверьте, что кластер виден в консоли и базы доступны.
net start "1C:Enterprise 8.3 Server Agent (x86-64)"

Если вместо snccntx… вы удалите весь reg_1541, кластер придётся создавать заново, а список баз пропадёт. Файлы баз в СУБД останутся, но подключать их придётся руками.

Чистка пользовательского кэша

Пользовательский кэш лежит на клиентских машинах и на терминальном сервере в профилях пользователей. При закрытом 1С можно удалить подкаталоги с GUID-именами в %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8. Файл 1cv8strt.pf и список баз (ibases.v8i) лежат рядом, их оставьте, иначе пропадёт список подключений.

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

Сервер на Linux

Логика та же, пути другие. Служба работает от пользователя usr1cv8, кэш лежит в его домашнем каталоге (обычно ~/.1cv8), каталог кластера задан параметром запуска ragent. Остановка и запуск выполняются средствами systemctl, а удаление временного содержимого — обычными командами оболочки. Проверяйте путь к каталогу кластера перед rm.

Автоматическая очистка по расписанию

Ручная чистка забывается. Для регулярной работы подойдёт планировщик заданий Windows и cron на Linux. Но автоматизировать стоит только мягкую часть: завершение зависших сеансов и очистку временных файлов, а не остановку службы по ночам без проверки.

Пример bat-файла, который завершает сеансы старше заданного времени, делать вслепую нельзя. Сначала определите критерий: что для вас «зависший». Это сеанс без активности более N часов или фоновое задание, висящее сутками.

Минимальный сценарий ночного обслуживания:

  1. Закрыть вход в базу и дождаться завершения сеансов или принудительно их завершить.
  2. Остановить службу.
  3. Удалить подкаталоги snccntx… и временные файлы учётной записи службы.
  4. Запустить службу и вернуть доступ к базе.

Регистрация задачи в планировщике от администратора:

schtasks /create /tn "Обслуживание кластера 1С" /tr "C:\scripts\cluster_cleanup.bat" /sc weekly /d SUN /st 03:00 /ru SYSTEM

Для Linux аналогично используется запись в crontab с вызовом вашего скрипта.

Что обязательно включить в скрипт:

  • 📝 запись в лог: что удалено, сколько места освобождено, когда;
  • ⛔ проверку, что служба действительно остановилась, прежде чем что-то удалять;
  • 🔁 возврат доступа к базе даже при ошибке, чтобы не оставить пользователей за закрытой дверью;
  • 📨 уведомление администратору, если шаг не выполнился.

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

Проверка после очистки: что смотреть и что делать при сбоях

После запуска службы пройдите короткую проверку.

  • Кластер появился в консоли администрирования, базы в списке на месте.
  • Зайдите в базу под тестовым пользователем и откройте пару основных форм.
  • Первый вход после чистки идёт дольше: кэш форм строится заново. Это нормально, повторный вход быстрее.
  • В журнале регистрации и в журнале Windows нет новых ошибок службы.

Если что-то пошло не так, поможет таблица.

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

Если чистка не помогла: оптимизация кластера 1С

Если после очистки скорость вернулась на день-два и снова просела, дело не в кэше. Проверьте настройки и нагрузку.

Память и рабочие процессы

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

Журнал регистрации и технологический журнал

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

СУБД

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

Расширения, обработки и регламентные задания

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

Железо и диск

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

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

Можно ли чистить кэш 1С на сервере, пока работают пользователи?
Мягкий способ через RAC можно: завершайте только конкретные зависшие сеансы. Удалять каталоги кластера при работающей службе нельзя.
Потеряю ли я данные, если удалю snccntx?
Данные баз хранятся в СУБД или в файле 1Cv8.1CD, а не в этих каталогах. Каталоги snccntx… пересоздаются при запуске. Но удалять их нужно только при остановленной службе.
Почему RAC не подключается к кластеру?
Чаще всего не запущен ras, неверный порт или адрес, либо порт закрыт на брандмауэре. Проверьте, что процесс ras работает и слушает указанный порт.
Как часто нужно чистить кэш сервера?
По необходимости: после обновлений, при сбоях или нехватке места. Регулярная еженедельная чистка по расписанию нужна редко, обычно хватает завершения зависших сеансов.
Что делать, если после чистки пропали базы из списка?
Скорее всего, затронуты файлы реестра кластера. Верните каталог из архива. Поэтому архив перед удалением обязателен.