Очистка кэша серверной 1С: что удалять, а что трогать нельзя
Содержание
Почистить кэш серверной 1С можно двумя путями: удалить временные каталоги кластера и пользовательские кэши при остановленной службе либо завершить зависшие сеансы через утилиту RAC без остановки сервера. Первый способ даёт полную очистку, второй безопасен в рабочее время. Какой выбрать, зависит от того, что именно у вас ломается.
Типичная картина: после обновления конфигурации форма открывается со старым видом, база тормозит, на сервере растёт папка кластера, а в каталоге пользователей служб лежат гигабайты временных файлов. Ниже порядок действий от безопасного к радикальному.
Что на сервере называют кэшем и когда его чистить
«Кэш сервера» в 1С — это не один каталог, а несколько мест с разными правилами. Путать их опасно: в одном лежит мусор, в другом — реестр кластера, без которого базы пропадут из списка.
| Что | Где лежит | Можно удалять |
|---|---|---|
| Кэш пользователя (формы, настройки окон) | %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8 учётной записи, под которой работает клиент или служба | Да, при закрытом 1С |
| Временные файлы серверных процессов | %TEMP% учётной записи службы агента сервера | Да, при остановленной службе |
| Файлы сеансовых данных кластера | каталоги snccntx… внутри каталога кластера (имя вида reg_1541) | Только при остановленной службе |
| Реестр кластера | файлы 1CV8Clst.lst и остальное содержимое reg_1541 | Нет, это конфигурация кластера |
| Файлы базы (файловый вариант) | каталог с 1Cv8.1CD | Нет |
Когда чистка оправдана:
- 🔧 после обновления платформы или конфигурации, если клиенты видят старые формы или получают ошибки открытия;
- 🐌 при постепенной деградации скорости без видимой причины в СУБД;
- 💾 когда на диске сервера заканчивается место из-за каталогов
snccntx…и временных файлов; - 🧱 при странных сообщениях вроде «Ошибка при выполнении операции с информационной базой» после аварийного завершения процессов.
Если база просто медленная, кэш чаще всего ни при чём. Сначала загляните в загрузку процессора и памяти на rphost, в блокировки СУБД и в размер журнала регистрации. Чистка кэша лечит не всё.
Серверный кэш — не панацея. Если вы чистите его каждую неделю «для профилактики», значит причина в другом: в расширениях, фоновых заданиях или нехватке памяти.
Подготовка: что сделать до первого удаления
Три минуты на подготовку сэкономят вечер на восстановлении.
- Узнайте, под какой учётной записью работает служба «Агент сервера 1С:Предприятия». Откройте оснастку служб Windows и посмотрите столбец «Вход от имени». Обычно это
USR1CV8или отдельный сервисный пользователь. Именно в его профиле лежит серверный кэш. - Найдите каталог кластера. Путь указан в параметрах запуска службы после ключа
-d, а порт кластера по умолчанию — 1541. Папка называетсяreg_1541. - Сделайте копию каталога кластера, если собираетесь удалять что-то внутри него. Достаточно архива: файлы небольшие.
- Предупредите пользователей. Задайте время и сообщение через консоль администрирования или RAC (ниже).
- Убедитесь, что есть свежая выгрузка или резервная копия баз. Чистка кэша данные не трогает, но аварии случаются из-за ошибки в пути.
Перед любым удалением внутри каталога кластера остановите службу агента сервера. Иначе вы удалите файлы, которые процессы держат открытыми, и получите полуразрушенное состояние.
Для проверки себя пригодится короткий список.
Мягкий способ: завершить сеансы и сбросить процессы через 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.
Запрет регламентных заданий нужен не всегда. Но если очистка идёт вместе с обновлением, лучше отключить, иначе задание успеет стартовать посреди процедуры.
Мягкий способ освобождает ресурсы, но не удаляет файлы на диске. Для этого переходим к ручной очистке.
Полная ручная очистка временных каталогов сервера
Этот способ нужен, когда место на диске занято файлами, а сеансы уже закрыты. Порядок такой.
- Закройте доступ к базам (RAC или консоль администрирования) и завершите все сеансы.
- Остановите службу «Агент сервера 1С:Предприятия». Через оснастку служб или командой в cmd от администратора:
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
Точное имя службы зависит от версии платформы. Посмотрите его в списке служб, не копируйте вслепую.
- Убедитесь, что процессы
rphost,rmngrиragentзавершились. Если остались, закройте их через диспетчер задач. - Очистите временные файлы учётной записи службы: каталог
%TEMP%этого пользователя. Если служба идёт отUSR1CV8, ищите профиль подC:\Users\USR1CV8или каталог профиля на другом диске. - Откройте каталог кластера
reg_1541. Удалять можно подкаталогиsnccntx…. Они создаются заново при старте. Файл1CV8Clst.lstи остальные служебные файлы не трогайте. - Запустите службу и проверьте, что кластер виден в консоли и базы доступны.
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 часов или фоновое задание, висящее сутками.
Минимальный сценарий ночного обслуживания:
- Закрыть вход в базу и дождаться завершения сеансов или принудительно их завершить.
- Остановить службу.
- Удалить подкаталоги
snccntx…и временные файлы учётной записи службы. - Запустить службу и вернуть доступ к базе.
Регистрация задачи в планировщике от администратора:
schtasks /create /tn "Обслуживание кластера 1С" /tr "C:\scripts\cluster_cleanup.bat" /sc weekly /d SUN /st 03:00 /ru SYSTEM
Для Linux аналогично используется запись в crontab с вызовом вашего скрипта.
Что обязательно включить в скрипт:
- 📝 запись в лог: что удалено, сколько места освобождено, когда;
- ⛔ проверку, что служба действительно остановилась, прежде чем что-то удалять;
- 🔁 возврат доступа к базе даже при ошибке, чтобы не оставить пользователей за закрытой дверью;
- 📨 уведомление администратору, если шаг не выполнился.
Раз в месяц проверяйте журнал выполнения. Скрипт, который тихо перестал работать полгода назад, хуже, чем его отсутствие.
Проверка после очистки: что смотреть и что делать при сбоях
После запуска службы пройдите короткую проверку.
- Кластер появился в консоли администрирования, базы в списке на месте.
- Зайдите в базу под тестовым пользователем и откройте пару основных форм.
- Первый вход после чистки идёт дольше: кэш форм строится заново. Это нормально, повторный вход быстрее.
- В журнале регистрации и в журнале Windows нет новых ошибок службы.
Если что-то пошло не так, поможет таблица.
reg_1541 из архива. Если архива нет, базы придётся подключить заново в новом кластере.%LOCALAPPDATA%\1C\1cv8.rphost ещё работают или файл держит антивирус. Остановите службу, закройте процессы, повторите удаление от администратора.Если чистка не помогла: оптимизация кластера 1С
Если после очистки скорость вернулась на день-два и снова просела, дело не в кэше. Проверьте настройки и нагрузку.
Память и рабочие процессы
Каждый рабочий процесс rphost потребляет память и растёт со временем. В свойствах рабочего сервера задаётся допустимый объём памяти процесса и интервал его перезапуска. Для небольшой организации обычно хватает одного рабочего сервера с умеренным числом соединений на процесс. Конкретные значения подбираются по загрузке: сначала измерьте, потом меняйте.
Журнал регистрации и технологический журнал
Разросшийся журнал регистрации замедляет открытие и поиск. Технологический журнал, оставленный включённым после диагностики, способен съесть диск за недели. Проверьте каталоги журналов и отключите то, что не нужно.
СУБД
Для клиент-серверного варианта нужно регулярное обслуживание СУБД: обновление статистики и реиндексация. Без них запросы 1С деградируют, и никакая очистка кэша не поможет. Расписание подбирайте под размер базы и режим работы.
Расширения, обработки и регламентные задания
Тяжёлое регламентное задание, висящее в 1С, создаёт нагрузку, похожую на «глючный кэш». Посмотрите в консоли администрирования, какие фоновые задания запущены и как долго.
Железо и диск
Каталоги кластера и временные файлы лучше держать на быстром диске, а не на медленной сетевой шаре. Проверьте свободное место: когда на системном диске остаётся мало, 1С начинает падать самыми неожиданными способами.
Частые вопросы
Можно ли чистить кэш 1С на сервере, пока работают пользователи?
Потеряю ли я данные, если удалю snccntx?
1Cv8.1CD, а не в этих каталогах. Каталоги snccntx… пересоздаются при запуске. Но удалять их нужно только при остановленной службе.Почему RAC не подключается к кластеру?
ras, неверный порт или адрес, либо порт закрыт на брандмауэре. Проверьте, что процесс ras работает и слушает указанный порт.