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

· 9 мин

Содержание

Кэш 1С на сервере не лежит в одной папке, и «удалить кэш» одной кнопкой нельзя. Это три разных набора файлов: серверный кэш кластера, временные файлы рабочих процессов и клиентский кэш пользователей, которые подключаются к серверу. Чистят их по-разному, а ошибка в выборе папки стоит дороже, чем лишняя медленная работа.

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

Как понять, что кэш пора чистить

Чистка помогает не всегда. Если база тормозит из-за блокировок или тяжёлых запросов, кэш ни при чём. Проверьте признаки.

Кэш под подозрением, когда:

  • 🐌 после обновления конфигурации или платформы появились странные ошибки интерфейса: пропавшие кнопки, старые формы, «битые» команды;
  • 🧩 у одного пользователя всё работает, у другого на той же базе нет, а после входа с чужого компьютера проблема уходит;
  • 📁 диск с кластером заполнен: каталог кластера или временная папка выросли до десятков гигабайт;
  • ⚠️ в журнале регистрации и в логах сервера видны ошибки доступа к файлам, которые «были и пропали»;
  • 🔄 после восстановления базы из копии поведение отличается от прежнего.

Быстрая проверка размера на Windows в PowerShell:

Get-ChildItem "C:\Program Files\1cv8\srvinfo" -Directory |
  ForEach-Object {
    $s = (Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue |
          Measure-Object Length -Sum).Sum
    "{0}`t{1:N1} ГБ" -f $_.Name, ($s/1GB)
  }

Если путь у вас другой, подставьте свой каталог кластера (он задаётся при установке службы сервера 1С).

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

Подготовка: что перед чисткой

Любая чистка на рабочем сервере — это перезапуск части сервисов или отключение пользователей. Не делайте её в середине дня.

  1. Предупредите пользователей и назначьте окно. Для небольшой базы хватит 15–20 минут.
  2. Сделайте копию каталога кластера. Если в нём лежит реестр кластера (список баз и настройки), потеря файла обойдётся в часы восстановления.
  3. Убедитесь, что известны учётные данные администратора кластера, если они заданы.
  4. Проверьте, что у вас есть выгрузка или копия самой информационной базы. Кэш чистить безопаснее, чем базу, но привычка нужна.

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

Очистка через консоль администрирования кластера

Это самый безопасный способ: вы не лезете в файловую систему, а работаете средствами самого сервера 1С.

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

Шаг 1. Отключите сеансы

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

То же можно сделать из командной строки через утилиту rac (она ставится вместе с сервером 1С):

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

Шаг 2. Перезапустите рабочие процессы

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

В консоли это делается на уровне рабочих процессов: завершите процессы или перезапустите службу сервера 1С. Второй вариант надёжнее, но затрагивает все базы кластера.

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

Шаг 3. Снимите блокировку и проверьте вход

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

Ручное удаление временных файлов на сервере

Когда консоль не помогла или диск уже забит, чистят файлы руками. Здесь важно различать каталоги.

ЧтоГде обычно лежитМожно удалять
Данные сеансов кластераПапки snccntx* внутри каталога кластераДа, при остановленной службе
Временные файлы процессовПапка TEMP пользователя, под которым работает службаДа, файлы старше нескольких дней
Реестр кластераПапка вида reg_1541Нет
Данные информационных базПапки с GUID внутри каталога кластераНет
Журнал регистрацииПодкаталоги 1Cv8Log в папках базТолько по регламенту, архивировать

Порядок работы на Windows:

  1. Остановите службу «Агент сервера 1С:Предприятия».
  2. Откройте каталог кластера (по умолчанию внутри srvinfo).
  3. Удалите папки snccntx*: это данные сеансов, они создаются заново.
  4. Откройте временный каталог учётной записи службы и удалите файлы, которые не заняты.
  5. Запустите службу.

На Linux логика та же, меняются пути: каталог кластера по умолчанию находится в домашней папке пользователя usr1cv8, а временные файлы — в /tmp и в каталоге этого пользователя.

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

Реестр, параметры запуска и клиентский кэш

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

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

Есть два способа сбросить клиентский кэш.

Через ключ запуска

Запустите 1С с ключом очистки:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "сервер\база" /ClearCache

Ключ /ClearCache сбрасывает кэш клиента для этой базы при запуске. Он удобен, когда проблема у одного пользователя. Путь к 1cestart.exe может отличаться, уточните его у себя.

Через удаление папок

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

Переименование вместо удаления сохранит список баз и настройки окон. Список баз при необходимости переносится файлом ibases.v8i.

Файловая и клиент-серверная база: разница в чистке

В клиент-серверном варианте кэш делится на серверную и клиентскую части, и главную работу делает сервер: рабочие процессы и каталог кластера. Чистка идёт по плану из предыдущих разделов.

В файловом варианте сервера нет. Базу открывают прямо клиенты, а кэш лежит только на клиентских машинах. Здесь работает только клиентская чистка. Если база файловая и лежит на сетевом ресурсе, дополнительно проверьте, не остались ли рядом блокировочные файлы после аварийного завершения. Файл блокировки базы (с расширением .1CL) остаётся при падении клиента и может мешать входу.

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

Автоматизация: PowerShell и BAT

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

# Удаляет кэш 1С в профилях, где файлы не менялись более 30 дней
$limit = (Get-Date).AddDays(-30)
Get-ChildItem "C:\Users" -Directory | ForEach-Object {
  foreach ($sub in "AppData\Local\1C\1cv8","AppData\Roaming\1C\1cv8") {
    $p = Join-Path $_.FullName $sub
    if (Test-Path $p) {
      Get-ChildItem $p -Directory |
        Where-Object { $_.LastWriteTime -lt $limit } |
        Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
    }
  }
}

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

Для серверной части безопаснее BAT-файл, который останавливает службу, чистит временную папку и запускает службу снова:

@echo off
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
for /d %%D in ("C:\Program Files\1cv8\srvinfo\reg_*\snccntx*") do rd /s /q "%%D"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"

Название службы и путь к каталогу проверьте у себя: они зависят от версии платформы и места установки. Проверить имя службы можно командой sc query или в оснастке служб.

Перед запуском скрипта на боевом сервере
Выполнено: 0 / 5

Регламент: как не чистить кэш в панике

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

  • 📅 Плановый перезапуск рабочих процессов. Многие админы настраивают в кластере периодическое пересоздание процессов: оно сбрасывает накопленную память и «залипший» кэш без вмешательства.
  • 🗂 Ротация журналов. Журнал регистрации и технологический журнал разрастаются быстрее кэша. Настройте архивацию и удаление старых файлов.
  • 🧹 Задача планировщика Windows. Запускайте клиентский скрипт ночью, серверный — раз в месяц или после обновления платформы.
  • 🔖 Чистка после обновлений. После перехода на новую версию платформы или большого релиза конфигурации сбрасывайте кэш на всех клиентах. Для массового случая удобно положить ключ /ClearCache в ярлык запуска на один раз.
  • 📈 Мониторинг диска. Алерт на заполнение выше 80% даёт время подготовиться заранее.

Пример расписания для базы средней нагрузки (примерно 30–50 пользователей):

ЗадачаПериодичность
Перезапуск рабочих процессов кластераРаз в неделю, ночью
Чистка временных файлов службыРаз в месяц
Клиентские кэши на терминальном сервереРаз в месяц, по давности изменения
Архивация журнала регистрацииРаз в квартал

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

Частые ошибки при чистке

  • 🚫 Удаление каталога кластера целиком. Потеряете список баз и настройки, придётся регистрировать базы заново.
  • 🚫 Чистка при работающей службе: файлы заняты, часть удаляется, часть нет, возникают рассинхронизации.
  • 🚫 Попытка «чистить реестр». На скорость 1С это не влияет.
  • 🚫 Чистка кэша как лекарство от медленных запросов. Если тормозит СУБД, нужны индексы и обслуживание базы, а не удаление файлов.

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

Сколько занимает первое открытие после чистки?
Медленнее обычного: от нескольких секунд до пары минут на тяжёлых формах. Кэш строится заново, после чего скорость возвращается.
Можно ли чистить кэш, пока пользователи работают?
Клиентский кэш — только после закрытия 1С у пользователя. Серверный — только в окно без сеансов.
Удалится ли что-то из базы данных?
Нет. Кэш — это производные файлы. Данные информационной базы лежат в СУБД или в файле базы и не затрагиваются.
Нужно ли чистить кэш после каждого обновления конфигурации?
Не всегда. Нужно, если после обновления остались старые формы или странные ошибки интерфейса. Тогда достаточно сбросить клиентский кэш.
Подойдёт ли способ для Linux?
Логика та же: остановить службу, очистить временные данные сеансов и каталог пользователя usr1cv8. Меняются только пути и команды управления службой.