Разберем крайне неприятную и диагностически сложную ситуацию, с которой часто сталкиваются системные администраторы и специалисты 1С при переносе или развертывании баз данных из резервных копий. Представьте сценарий: вы загружаете информационную базу из файла выгрузки .dt на клиент-серверный вариант работы. Загрузка в Конфигураторе проходит успешно и без ошибок. Однако при попытке открыть базу в режиме «1С:Предприятие» запуск зависает, а в консоли администрирования кластера серверов 1С лавинообразно нарастает количество активных сеансов с пустым пользователем. Сама база при этом так и не открывается.
В этой статье мы подробно проанализируем, почему возникает этот сбой, как работает механизм циклической ошибки на платформе 1С 8.3, и пошагово разберем методы решения этой проблемы.
Для начала выясним причину такого поведения платформы. Когда мы запускаем информационную базу (особенно в первый раз после загрузки новой конфигурации или обновления), система выполняет ряд инициализирующих действий. В современных конфигурациях, разработанных на базе Библиотеки Стандартных Подсистем (БСП), таких как «1С:Бухгалтерия 3.0», при первом старте автоматически инициируются фоновые задания обновления данных.
Если в процессе инициализации сеанса происходит критическая ошибка на самом раннем этапе (например, платформа не может прочитать таблицу пользователей v8users, или возникает бинарная несовместимость метаданных), рабочий процесс сервера rphost не может корректно завершить авторизацию. Сеанс «зависает» в неопределенном состоянии без привязки к конкретному имени пользователя. Менеджер кластера 1С (rmngr), видя неудавшуюся попытку или аварийное завершение фонового процесса, согласно внутренним алгоритмам отказоустойчивости пытается повторить операцию запуска. Это приводит к бесконечному циклу создания новых процессов и лавинообразному росту «призрачных» пустых сеансов, которые быстро утилизируют ресурсы сервера.
Рассмотрим основные причины, которые приводят к подобному поведению системы:
.dt был выгружен на более новой (или существенно отличающейся) версии платформы, а загружается на сервер под управлением более старого релиза, бинарная структура внутренних таблиц конфигурации при распаковке может быть интерпретирована неверно. При запуске это вызывает тихий критический сбой ядра платформы..dt иногда нарушается целостность служебных таблиц СУБД, отвечающих за список пользователей.---
Проанализируем главный фактор сбоя — разницу версий платформы 1С. Настоятельно рекомендуется всегда соблюдать правило: версия платформы, на которой выполняется загрузка файла .dt, должна в точности соответствовать версии платформы, на которой этот файл был выгружен.
Если базу вам прислал сторонний клиент или контрагент, обязательно выясните у него точный номер релиза платформы (например, 8.3.22.1709). Если такой возможности нет, выполните следующие действия:
---
Чтобы прервать лавинообразное размножение пустых сеансов и дать базе возможность запуститься для диагностики, необходимо заблокировать выполнение фоновых задач. Сделать это можно двумя основными способами.
Если база развернута на сервере приложений 1С, выполните следующие шаги:
Мы можем запустить систему в обход планировщика задач с помощью специального ключа запуска. Для этого откроем командную строку (cmd) и запустим тонкий или толстый клиент со специальным ключом /AllowExecuteScheduledJobs -Off.
Посмотрим на пример командного файла для аварийного запуска:
"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /S "ServerName\BaseName" /N "Администратор" /P "Пароль" /AllowExecuteScheduledJobs -Off /ClearCache
Параметр /AllowExecuteScheduledJobs -Off запрещает выполнение любых регламентных заданий в рамках данного запуска, а параметр /ClearCache очищает локальный кэш метаданных клиента, исключая влияние старых настроек.
---
Если база на сервере категорически отказывается запускаться даже с отключенными регламентными заданиями, применим проверенную методику «оздоровления» конфигурации через промежуточный файловый вариант.
Выполним процедуру по шагам:
.dt (меню Администрирование — Загрузить информационную базу...).1Cv8.1CD утилитой проверки физической целостности chdbfl.exe (она находится в каталоге bin установленной платформы)..dt. Этот «чистый» файл теперь можно безбоязненно загружать на рабочий сервер СУБД.---
Часто сервер приложений 1С «запоминает» старое состояние базы данных, если загрузка .dt производилась поверх уже существовавшей ранее ИБ с тем же именем. Чтобы полностью исключить кэш-зависимость, выполним следующие действия:
.dt.После такой чистки сервер будет вынужден создать схему метаданных «с нуля», что полностью исключит любые конфликты старого кэша рабочих процессов rphost.
---
В заключение отметим важный архитектурный нюанс работы с платформой 1С. Файл формата .dt не является полноценным бэкапом базы данных в промышленном понимании. Это лишь оптимизированный платформонезависимый архив логической структуры и данных. При его выгрузке и последующей загрузке платформа выполняет колоссальный объем работы по конвертации данных из СУБД в XML-подобный поток и обратно.
Если вы делаете копию базы в рамках одного сетевого контура (например, создаете тестовую базу из рабочей), всегда используйте встроенные средства СУБД. Резервная копия базы данных MS SQL (файл .bak) или дамп базы PostgreSQL создаются и разворачиваются в разы быстрее, не содержат логических ошибок конвертации платформы 1С и гарантируют 100% идентичность физической структуры баз данных, полностью предотвращая появление подобных проблем с пустыми сеансами.