Каталоги snccntx на сервере 1С: зачем они нужны и когда их удалять
Содержание
Файл snccntx.dat в 1С — это часть служебного кэша сервера 1С:Предприятия. Он лежит в каталоге snccntx… внутри данных кластера (srvinfo\reg_1541) и хранит рабочий контекст информационной базы, который сервер собирает при обращении к ней. Данных учёта в нём нет: удалённый каталог сервер создаст заново при следующем подключении к базе.
Чистить его нужно не по расписанию «для профилактики», а когда сервер ведёт себя так, будто видит старую версию базы: после обновления конфигурации, сбоя диска или аварийного завершения службы. Чистить — только при остановленной службе агента сервера.
Что хранит snccntx.dat и зачем он нужен серверу 1С
Сервер 1С держит для каждой информационной базы свой набор служебных файлов. Часть из них важна и уникальна (реестр кластера), часть — производная, которую можно пересобрать. Каталоги snccntx и файл snccntx.dat относятся ко второй группе.
Что важно знать о них на практике:
- 🗂 Это кэш, а не данные. Документы, справочники и регистры хранятся в СУБД (MS SQL, PostgreSQL) или в файле
1Cv8.1CD. Вsnccntxих нет. - 🔁 Пересоздаётся автоматически. После удаления каталога первый вход в базу пройдёт чуть дольше, дальше всё работает как раньше.
- 🧩 Привязан к базе. У каждой базы на сервере свой каталог со своим идентификатором в имени (
snccntx+ GUID). - ⚡ Ускоряет работу. Серверу не нужно при каждом подключении заново собирать служебные структуры базы.
Формат файла закрытый, двоичный, фирма 1С его не документирует. Поэтому всё, что известно о нём администраторам, — практика: что будет, если его удалить, и в каких случаях это помогает.
Если у вас файловая база без сервера 1С, каталогов snccntx у вас не будет. Похожую роль на компьютере пользователя играет локальный кэш в профиле: %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8. Для файловых баз чистят именно его.
Чем кэш сервера отличается от кэша клиента
| Что | Где лежит | За что отвечает | Как чистить |
|---|---|---|---|
Кэш сервера (snccntx) | Каталог кластера на сервере 1С | Служебный контекст базы на стороне сервера | Остановить агент, удалить каталоги |
| Кэш клиента | %LOCALAPPDATA%\1C\1cv8\<GUID> у пользователя | Метаданные и формы на компьютере пользователя | Ключ запуска /ClearCache или удаление папки |
| Настройки пользователя | %APPDATA%\1C\1cv8 | Список баз, пользовательские настройки | Не трогать без нужды |
Путают их часто. Если ошибка появляется только у одного пользователя — дело в кэше клиента. Если у всех и на всех компьютерах — смотрите на сервер.
Где лежит файл snccntx.dat на Windows и Linux
Каталоги snccntx находятся в рабочем каталоге кластера. Его имя строится по номеру порта менеджера кластера: reg_1541 для стандартного порта 1541, reg_2541 — для кластера на порту 2541 и так далее.
Типичные пути:
| Система | Каталог данных кластера по умолчанию |
|---|---|
| Windows | C:\Program Files\1cv8\srvinfo\reg_1541\ |
| Linux | /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/ |
Внутри reg_1541 лежат файлы реестра кластера и каталоги баз, названные по их идентификаторам. Искать нужно каталоги, имя которых начинается с snccntx. В зависимости от версии платформы они лежат прямо в reg_1541 или во вложенных каталогах баз, поэтому проще найти их поиском по маске.
Как найти точный путь на своём сервере
Установщик позволяет задать другой каталог данных, поэтому путь «по умолчанию» есть не везде. Точное место видно в параметрах службы агента:
- Откройте
services.msc. - Найдите службу «Агент сервера 1С:Предприятия 8.3».
- Откройте её свойства и посмотрите строку «Исполняемый файл».
- Каталог указан после ключа
-d. Например:-d "D:\1C\srvinfo".
Поиск каталогов по маске в PowerShell:
Get-ChildItem -Path "C:\Program Files\1cv8\srvinfo" -Recurse -Directory -Filter "snccntx*" |
Select-Object FullName, LastWriteTime
На Linux:
sudo find /home/usr1cv8/.1cv8/1C/1cv8 -maxdepth 3 -type d -name 'snccntx*'
Рядом с snccntx лежат файлы 1CV8Clst.lst и srvribrg.lst. Это реестр кластера: список баз, рабочих серверов, администраторов. Их удалять нельзя — кластер «забудет» все базы, и их придётся регистрировать заново.
Когда виноват кэш: признаки повреждённого контекста базы
Повреждённый или устаревший кэш сервера не выдаёт отдельной ошибки с его именем. Его выдают косвенные признаки, и все они касаются сразу всех пользователей базы.
Признаки, при которых стоит проверить snccntx:
- 🔄 После обновления конфигурации часть пользователей видит старые формы или старый состав объектов, хотя «Обновление конфигурации базы данных» прошло без ошибок.
- 🐢 Вход в одну конкретную базу на сервере стал заметно дольше, а другие базы на том же сервере работают нормально.
- ❌ При входе или открытии объектов появляются ошибки обращения к метаданным, которые не воспроизводятся в копии базы на другом сервере.
- 💥 Проблемы начались после аварийного выключения сервера, переполнения диска или принудительного завершения процессов
rphost. - 🧱 Обновление через Конфигуратор прошло, а изменения в режиме «Предприятие» не видны даже после перезапуска клиента.
Прежде чем трогать сервер, исключите клиентскую сторону. Запустите 1С у одного пользователя с ключом /ClearCache:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /ClearCache
Если после этого у него всё в порядке — дело было в кэше клиента, сервер трогать не нужно.
Как безопасно очистить snccntx: пошагово
Очистка занимает 5-10 минут, но требует остановки службы. Делайте это вне рабочего времени.
Остановка агента сервера обрывает сеансы всех пользователей всех баз этого кластера. Несохранённые документы будут потеряны, фоновые и регламентные задания прервутся.
Шаг 1. Предупредите пользователей и закройте сеансы
- Сообщите пользователям время работ.
- В консоли администрирования серверов 1С откройте кластер, раздел сеансов, и проверьте, кто ещё работает.
- Дождитесь завершения длительных операций: закрытия месяца, обменов, загрузок.
Шаг 2. Остановите службу агента
На Windows — через services.msc или PowerShell от имени администратора:
Get-Service | Where-Object { $_.Name -like "1C:Enterprise 8.3 Server Agent*" } | Stop-Service
На Linux имя службы зависит от версии платформы. Посмотрите его командой:
systemctl list-units --type=service | grep -i 1c
И остановите найденную службу через sudo systemctl stop <имя>.
Проверьте, что процессы ragent, rmngr и rphost действительно завершились. В диспетчере задач Windows или командой ps aux | grep -E 'ragent|rmngr|rphost' на Linux.
Шаг 3. Сделайте копию каталога кластера
Скопируйте весь каталог srvinfo (или reg_1541) в другое место. Он небольшой, копирование занимает секунды. Если что-то пойдёт не так, вы вернёте всё как было.
Шаг 4. Удалите каталоги snccntx
Удаляйте только каталоги, имя которых начинается с snccntx. Ничего другого в reg_1541 не трогайте.
Если проблема только в одной базе, можно удалить только её каталог. Если не знаете, какой каталог чей, удалите все snccntx* — сервер пересоздаст каждый при первом входе в соответствующую базу.
Шаг 5. Запустите службу и проверьте результат
- Запустите агент сервера (
Start-Serviceилиsystemctl start). - Зайдите в проблемную базу. Первый вход будет дольше обычного — сервер собирает контекст заново.
- Проверьте, появился ли новый каталог
snccntxс текущей датой изменения. - Убедитесь, что симптом пропал: формы актуальны, ошибка не повторяется.
Если после очистки ошибка осталась — дело не в кэше. Следующие шаги: проверка базы на копии, проверка журнала регистрации и технологического журнала сервера.
Что внутри snccntx.dat и можно ли его прочитать
Формат файла не опубликован. Открывать snccntx.dat текстовым редактором бесполезно: внутри двоичные данные, читаемых строк там почти нет.
Что можно узнать без «вскрытия» файла:
- 📅 Дата изменения. Если каталог базы не обновлялся с момента обновления конфигурации, а проблемы начались сразу после него, это аргумент за очистку.
- 📏 Размер. Он зависит от размера конфигурации. Для крупных конфигураций вроде ERP кэш заметно больше, чем для Бухгалтерии. Резкий рост размера сам по себе не ошибка.
- 🆔 Идентификатор в имени. По нему можно понять, к какой базе относится каталог: он совпадает с идентификатором базы в реестре кластера и в имени соседнего каталога базы.
Как сопоставить каталог с базой, если баз на сервере десятки:
- Посмотрите идентификаторы баз через утилиту
rac(командаrac infobase summary list --cluster=<id кластера>; идентификатор кластера даётrac cluster list). - Найдите идентификатор нужной базы в имени каталога
snccntx…или в имени соседнего каталога базы. - Если формат вывода у вас отличается, смотрите справку
rac help infobase.
Не пытайтесь редактировать файл вручную или подменять его копией с другого сервера. Пользы от этого нет, а получить базу, которая не открывается до очистки кэша, вполне реально.
Профилактика и автоматизация очистки кэша сервера
Регулярно чистить snccntx не нужно. Кэш, который работает нормально, лучше не трогать: каждая очистка — это остановка сервера и медленный первый вход для всех баз.
Что реально снижает число проблем с кэшем:
- 💾 Свободное место на диске с
srvinfo. Переполненный диск — частая причина повреждения служебных файлов. Держите запас и следите за ростом журналов регистрации, они лежат там же. - 🔌 Корректное завершение службы. Перед перезагрузкой сервера останавливайте агент 1С, а не полагайтесь на то, что Windows завершит его сама.
- 🛡 Исключения в антивирусе. Добавьте каталог
srvinfoв исключения проверки в реальном времени. Антивирус, который блокирует файлы кэша во время записи, — классический источник странных сбоев. - 🔄 Перезапуск после обновления платформы. После установки новой версии платформы на сервер перезапустите службу целиком.
Скрипт для планового обслуживания
Если очистка нужна в рамках регламента — например, раз в квартал или после каждого крупного обновления конфигурации, — её можно поставить в планировщик заданий Windows на ночное время:
# Очистка серверного кэша 1С. Запускать от имени администратора в нерабочее время.
$srvinfo = "C:\Program Files\1cv8\srvinfo"
$backup = "D:\Backup\srvinfo_" + (Get-Date -Format "yyyyMMdd_HHmm")
$svc = Get-Service | Where-Object { $_.Name -like "1C:Enterprise 8.3 Server Agent*" }
$svc | Stop-Service -Force
Start-Sleep -Seconds 30
Copy-Item -Path $srvinfo -Destination $backup -Recurse
Get-ChildItem -Path $srvinfo -Recurse -Directory -Filter "snccntx*" |
Remove-Item -Recurse -Force
$svc | Start-Service
Перед первым запуском проверьте путь к srvinfo по ключу -d в свойствах службы и пропишите свой. Пауза в 30 секунд нужна, чтобы процессы rphost успели завершиться.
Для Linux то же самое делается коротким bash-скриптом с systemctl stop, cp -a и find … -name 'snccntx*' -exec rm -rf {} +, запуском через cron.
Частые ошибки при очистке кэша
- ❌ Удалили весь каталог
reg_1541. Вместе с кэшем пропал реестр кластера. Базы придётся регистрировать заново, а заодно восстанавливать настройки рабочих серверов и администраторов. Лечится только копией каталога. - ❌ Чистили при работающей службе. Часть файлов занята процессами и не удалится, а оставшиеся могут оказаться в несогласованном состоянии.
- ❌ Чистили не тот сервер. В кластере из нескольких рабочих серверов служебные каталоги есть на каждом. Если базы обслуживаются на нескольких машинах, проверьте каждую.
- ❌ Искали проблему на сервере, а она у клиента. Если сбой у одного пользователя, очистка сервера ничего не даст, а остальным сотрудникам вы сорвёте работу.
- ❌ Очистка как «лекарство от всего». Если после удаления кэша ошибка вернулась через день, причина в другом: в самой базе, в железе или в конфигурации.