Чистим кэш кластера 1С на сервере: что удалять, а что трогать нельзя
Содержание
Чтобы почистить кэш
серверной базы 1С, остановите службу «Агент сервера 1С:Предприятия», удалите в каталоге кластера (srvinfo) папки snccntx_* и временные файлы учётной записи службы, затем запустите службу снова. Сам реестр кластера и каталоги баз reg_1541 трогать нельзя.
Зачем это нужно? Типичные симптомы: после обновления конфигурации пользователи видят старые формы, база «подтормаживает» без видимых причин, рабочие процессы разрастаются в памяти, а перезапуск клиента не помогает. Ниже — порядок действий от безопасного к радикальному и готовый скрипт, чтобы не делать всё руками.
Что именно кэшируется на сервере 1С и когда это мешает
У клиент-серверной базы кэш лежит в двух местах: на компьютерах пользователей и на самом сервере. Чистка клиентского кэша (папки 1cv8 в профиле пользователя) серверную проблему не решает. Нужно смотреть на сервер.
На сервере 1С кэшируется несколько вещей:
- 🗂 Данные сеансов — каталоги
snccntx_*внутри папки базы в кластере. Хранят служебные данные подключённых сеансов. - 📦 Кэш метаданных и модулей — рабочие процессы держат разобранные модули в памяти и частично на диске.
- 🧾 Временные файлы — то, что рабочие процессы пишут во временный каталог учётной записи, под которой запущена служба.
- 🔎 Индексы полнотекстового поиска — отдельная история, их не чистят «заодно».
Чистка помогает, когда:
- после обновления конфигурации или расширения сервер ведёт себя так, будто изменений нет;
- появляются ошибки вида
Ошибка загрузки модуляилиНеверный формат потокабез явной причины; - каталог кластера занимает гигабайты, а баз в нём немного;
- рабочие процессы
rphostдержат память и не отдают её даже ночью.
Если тормозит только у одного пользователя, виноват, скорее всего, его клиентский кэш или сеть. Серверный кэш в этом случае не трогайте.
Перед началом: бэкап, окно работ и остановка службы
Работы на сервере прервут всех пользователей, поэтому согласуйте окно с руководителем и предупредите людей. Вечер или выходной — лучший вариант.
Перед удалением любых файлов сделайте копию каталога кластера или хотя бы выгрузите базы в .dt. Откат из копии занимает минуты, а восстановление после случайного удаления реестра — часы.
Порядок подготовки:
- Выгрузите информационные базы (Конфигуратор → «Администрирование» → «Выгрузить информационную базу»).
- Узнайте, где лежит каталог кластера. В консоли администрирования откройте свойства «Центральных серверов» — там указан каталог запуска. На Windows он обычно называется
srvinfo, на Linux — внутри домашнего каталога пользователяusr1cv8. - Завершите сеансы пользователей (раздел «Сеансы» в консоли кластера) или попросите всех выйти.
- Остановите службу.
Для Windows остановка из PowerShell выглядит так (имя службы подставьте своё — найдите его командой Get-Service *1C*):
Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)" -Force
Для Linux:
sudo systemctl stop srv1cv83
Проверьте, что процессы действительно остановились. В диспетчере задач не должно остаться ragent, rmngr и rphost. Если какой-то завис — завершите его вручную. Пока процессы живы, файлы будут заняты, а часть из них вы удалите «вживую», получив рассинхронизацию.
Где лежит кэш и какие файлы можно удалять
Откройте каталог кластера. Структура примерно такая:
srvinfo\
reg_1541\
1CV8Clst.lst
<GUID базы>\
1Cv8Reg.lgd
snccntx_...\
...
...
Номер 1541 — порт главного менеджера кластера, у вас он может быть другим (например, reg_1641).
| Что | Можно удалять | Комментарий |
|---|---|---|
snccntx_* внутри папок баз | Да | Данные сеансов, пересоздаются при запуске |
| Временные файлы учётной записи службы | Да | Содержимое, а не сам каталог |
1CV8Clst.lst | Нет | Список баз и настроек кластера |
1Cv8Reg.lgd и другие файлы журнала регистрации | Нет, пока не нужно | Это журнал, а не кэш |
| Каталоги индекса полнотекстового поиска | Нет | После удаления индекс придётся строить заново |
Файлы .lst, .dat в корне reg_* | Нет | Реестр кластера |
Если не уверены в файле — не удаляйте. Переместите в соседнюю папку и проверьте работу.
Ошибка «почистил всё в srvinfo» — самая дорогая. Вместе с кэшем исчезают регистрации баз, настройки кластера и журналы. Базы придётся подключать к кластеру заново.
Временный каталог службы
Рабочие процессы пишут временные файлы туда, где живёт профиль учётной записи службы.
- Windows, служба под локальной системой — системный каталог временных файлов.
- Windows, служба под пользователем
usr1cv8—C:\Users\usr1cv8\AppData\Local\Temp. - Linux —
/tmpи каталог~/.1cv8пользователяusr1cv8.
Удаляйте содержимое каталога, но не сам каталог. Файлы, занятые другим процессом, система не даст стереть — это нормально.
Клиентский кэш на сервере
Если на сервере запускаются клиентские сеансы (например, фоновые задания через 1cv8.exe или RDP-пользователи), у них есть свой кэш в профиле:
%APPDATA%\1C\1cv8%LOCALAPPDATA%\1C\1cv8
Эти каталоги чистят отдельно, под нужным пользователем, при закрытых клиентах.
Пошаговая очистка вручную
Служба остановлена, бэкап есть. Дальше по шагам.
- Откройте каталог кластера, затем
reg_1541и папку нужной базы. Её имя — это идентификатор базы, сопоставить его с названием можно в консоли по свойствам базы. - Найдите каталоги
snccntx_*. Удалите их. - Если работаете с несколькими базами и проблема общая — повторите для каждой папки базы.
- Откройте временный каталог учётной записи службы и очистите его содержимое.
- Запустите службу.
Windows:
Start-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"
Linux:
sudo systemctl start srv1cv83
- Подождите минуту-две, пока поднимутся
rmngrиrphostи откройте базу.
Первый вход будет медленнее обычного. Это нормально: сервер заново разбирает модули и строит кэш. Если база открылась и формы показывают актуальную конфигурацию, цель достигнута.
Если после старта база не открывается с ошибкой доступа к кластеру, проверьте права учётной записи службы на каталог srvinfo. Часто их теряют при копировании каталога под другим пользователем.
Очистка без остановки службы: через консоль кластера
Остановить сервер не всегда можно. Тогда используйте мягкий вариант — сбросить рабочие процессы и сеансы из консоли администрирования серверов 1С. Он не удалит файлы, но освободит память и заставит процессы заново прочитать конфигурацию.
Что можно сделать:
- Завершить сеансы базы. В дереве кластера откройте «Информационные базы» → нужная база → «Сеансы», выделите все и завершите.
- Перезапустить рабочие процессы. В разделе «Рабочие серверы» → «Рабочие процессы» завершите нужный процесс
rphost. Менеджер кластера поднимет новый. - Настроить автоперезапуск. В свойствах кластера есть параметры «Интервал перезапуска» рабочих процессов, «Допустимый объём памяти» и «Интервал превышения допустимого объёма памяти». Они заставляют
rphostперезапускаться сами, когда разрастаются.
Пример разумных значений для сервера с 32 ГБ памяти и 100–150 пользователями: перезапуск раз в сутки (86400 секунд) и допустимый объём памяти порядка 8–10 ГБ на процесс. Точные цифры зависят от нагрузки: смотрите, сколько реально занимает rphost в пиковые часы, и берите значение с запасом.
Завершение рабочего процесса обрывает сеансы, которые на нём работали. Пользователи потеряют несохранённые данные. Делайте это в нерабочее время.
Сравнение способов:
| Способ | Простой для пользователей | Что очищается | Риск |
|---|---|---|---|
| Сброс сеансов и процессов в консоли | Короткий | Память и сеансовые данные | Низкий |
Остановка службы + удаление snccntx_* | Полный, на время работ | Файловый кэш сеансов и временные файлы | Средний, если ошибиться в каталоге |
| Полная пересборка кластера | Длительный | Всё, включая настройки | Высокий |
Полную пересборку кластера оставьте на крайний случай, когда мягкие способы не сработали, а симптомы остались.
Автоматизация: скрипт ночной очистки
Если кэш приходится чистить регулярно, оформите это скриптом и повесьте на планировщик. Ниже — пример для Windows. Пути и имя службы замените на свои.
$svc = "1C:Enterprise 8.3 Server Agent (x86-64)"
$srv = "D:\srvinfo\reg_1541"
$logDir = "D:\scripts\logs"
$log = Join-Path $logDir ("clean_" + (Get-Date -Format "yyyyMMdd") + ".log")
New-Item -ItemType Directory -Force -Path $logDir | Out-Null
"Старт: $(Get-Date)" | Out-File $log -Append
Stop-Service -Name $svc -Force
Start-Sleep -Seconds 20
# Принудительно завершаем зависшие процессы кластера
Get-Process ragent,rmngr,rphost -ErrorAction SilentlyContinue | Stop-Process -Force
# Удаляем каталоги данных сеансов
Get-ChildItem -Path $srv -Recurse -Directory -Filter "snccntx_*" |
ForEach-Object {
"Удаляю: $($_.FullName)" | Out-File $log -Append
Remove-Item $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
}
Start-Service -Name $svc
"Готово: $(Get-Date)" | Out-File $log -Append
Что стоит сделать вокруг скрипта:
- ✅ запустите его вручную один раз и посмотрите журнал, прежде чем вешать на расписание;
- ✅ поставьте запуск на ночь и не чаще одного раза в сутки;
- ✅ добавьте в начало копирование
reg_1541в архивную папку, если места хватает; - ✅ следите за размером журнала, чтобы он сам не превратился в мусор.
Для Linux логика та же: systemctl stop, find по маске snccntx_*, systemctl start. Запуск — через cron или systemd timer.
#!/bin/bash
SRV="/home/usr1cv8/.1cv8/1C/1cv8/srvinfo"
systemctl stop srv1cv83
sleep 20
find "$SRV" -type d -name 'snccntx_*' -exec rm -rf {} +
systemctl start srv1cv83
Путь к srvinfo в вашей установке может отличаться — сверьте его в свойствах кластера, а не копируйте вслепую.
После очистки: что проверить и как настроить сервер
Чистка снимает симптом. Чтобы он не вернулся, посмотрите на причины.
Быстрая проверка результата
- Запустите базу под обычным пользователем и откройте тяжёлую форму (например, отчёт или журнал документов ).
- Сравните время открытия с тем, что было до чистки.
- В консоли кластера посмотрите, сколько памяти занимает
rphostчерез час работы, и ещё раз вечером. - Если вы обновляли конфигурацию — убедитесь, что формы показывают новые реквизиты.
Параметры, которые стоит пересмотреть
- Память под рабочие процессы. Если
rphostрастёт до предела и не отпускает, настройте автоперезапуск (см. выше). - Число рабочих процессов и баз на процесс. Одна тяжёлая база на отдельном процессе не мешает остальным. Менять настройки лучше постепенно, смотря на нагрузку.
- Место на диске. Каталог кластера и временный каталог не должны делить диск с базой данных СУБД. Нехватка места на системном диске ломает кэш незаметнее всего.
- Журнал регистрации. Если
1Cv8Reg.lgdили каталог1Cv8Logразрослись, настройте разделение журнала по периодам и храните старые периоды отдельно.
Если после очистки проблема вернулась через день-два, чистка — не лекарство. Ищите утечку памяти в конкретном модуле или внешней обработке, а не повторяйте чистку по расписанию вечно.
Если после чистки что-то пошло не так
Разберём типовые ситуации.
journalctl -u srv1cv83 на Linux). Чаще всего причина в правах на каталог srvinfo или в том, что вместе с кэшем удалили файлы реестра. Восстановите каталог из копии и повторите чистку точечно.1CV8Clst.lst. Верните его из копии. Если копии нет, базы придётся заново добавлять в кластер, указывая прежние параметры СУБД.rphost, антивирус и резервное копирование — они часто держат файлы открытыми. Остановите их на время работ.