← На главную
При работе в распределенной информационной базе (РИБ) нередко возникает ситуация, когда в момент автоматической или ручной синхронизации данных пользователи центрального узла сталкиваются с внезапным завершением сеанса. Программа выдает сообщения вида «Не удалось заблокировать запись...», «Ошибка СУБД: Не удалось зафиксировать файл базы данных для открытия или изменения» либо аварийно закрывается у всех работающих сотрудников сразу.
Проанализируем природу возникновения этой проблемы, рассмотрим ключевые факторы нестабильности в файловом режиме работы и разберем пошаговый план устранения сбоев.
Причины возникновения ошибок и вылетов при обмене
Выясним причину, почему стабильно работавший ранее обмен начинает вызывать массовые сбои в центральной базе. Основными факторами являются:
- Специфика сетевого доступа к файловой базе (SMB-протокол): Если центральная база
1Cv8.1CD расположена в общедоступной сетевой папке (например, \\Server\1c_support\base_2017/1Cv8.1CD), все блокировки таблиц и диапазонов байт обслуживаются сетевой файловой системой операционной системы. Механизмы кэширования Windows (Oplocks, лизинг каталогов SMB2/SMB3) при интенсивной одновременной записи вызывают таймауты и блокируют доступ клиентов к файлу базы. - Длительные транзакции при загрузке сообщений обмена: По мере роста объема данных или накопления изменений пакет обмена увеличивается. Загрузка большого пакета монопольно блокирует служебные таблицы и регистры на длительное время, из-за чего параллельные транзакции пользователей завершаются аварийно.
- Пересечение фоновых регламентных заданий: Если интервал между сеансами автообмена слишком мал, новый процесс загрузки из периферийного узла может запуститься до завершения предыдущего, вызывая взаимную блокировку (deadlock).
- Кратковременные сетевые сбои и работа сетевого оборудования: Любое мгновенное прерывание связи сетевого коммутатора (свитча) или кратковременное энергосбережение сетевой карты приводит к зависанию дескрипторов файлов и падению сеансов 1С.
- Конфликты со службами антивирусного мониторинга: Проверка изменяемого файла
1Cv8.1CD антивирусом «на лету» блокирует к нему доступ для процессов 1С на уровне ОС.
Шаг 1. Оптимизация размера транзакций при обмене данными
Разберем первоочередное действие, позволяющее снизить нагрузку на файловую СУБД во время загрузки и выгрузки сообщений обмена. По умолчанию система пытается записать большой объем данных в рамках одной неделимой транзакции. Разделим процесс на небольшие порции.
- Откроем настройки плана обмена в конфигурации или в режиме «1С:Предприятие» (в зависимости от используемой подсистемы обмена данными).
- Найдем параметр «Количество элементов в транзакции» (для выгрузки и загрузки данных).
- Установим значение в диапазоне от 100 до 200 элементов.
- Сохраним настройки и проверим выполнение синхронизации.
Дробление транзакций позволяет 1С кратковременно освобождать блокировки таблиц, давая возможность пользователям беспрепятственно выполнять оперативные действия.
Шаг 2. Проверка физической целостности файла информационной базы
Аварийные отключения пользователей по сети нередко приводят к повреждению внутренних таблиц файла 1Cv8.1CD. Выполним низкоуровневую диагностику структуры базы:
- Завершим работу всех пользователей и отключим регламентные задания обмена.
- Обязательно создадим резервную копию файла
1Cv8.1CD путем прямого копирования в отдельный каталог. - Перейдем в каталог исполняемых файлов платформы 1С (обычно
C:\Program Files (x86)\1cv8\8.X.XX.XXX\bin\). - Запустим утилиту
chdbfl.exe. - В поле «Имя файла БД» выберем файл нашей базы, установим флаг «Исправлять обнаруженные ошибки» и нажмем кнопку «Выполнить».
Шаг 3. Устранение сетевых конфликтов и настройка окружения
Если используется схема с общей сетевой папкой, настроим операционную систему и окружение для минимизации блокировок:
- Настройка исключений антивируса: Добавим каталог с файлом базы данных, расширения
*.1CD, *.cfl, *.tmp, а также каталоги временных файлов пользователей в список исключений антивирусного сканера на сервере и всех рабочих станциях. - Настройка энергосбережения сетевых адаптеров: В диспетчере устройств на клиентских компьютерах и сервере откроем свойства сетевой карты, перейдем на вкладку «Управление электропитанием» и снимем флаг «Разрешить отключение этого устройства для экономии энергии».
- Контроль расписания обменов: Увеличим интервалы между автоматическими сеансами синхронизации, чтобы исключить наложение фоновых процессов обмена разных узлов друг на друга.
Шаг 4. Изменение архитектуры работы с базой (кардинальное решение)
Рассмотрим долгосрочные и надежные варианты организации инфраструктуры, полностью устраняющие ошибку блокировки файла 1Cv8.1CD:
- Терминальный режим (RDP): Перенесем работу пользователей на тот же сервер, где физически находится файл базы. При локальном подключении через Remote Desktop клиенты работают с файлом напрямую в памяти сервера, исключая медленный и нестабильный сетевой протокол SMB.
- Публикация на веб-сервере (IIS / Apache): Опубликуем файловую базу на веб-сервере. В этом случае единственным процессом, работающим с файлом базы, становится сам веб-сервер, а пользователи подключаются через тонкий клиент по протоколу HTTP/HTTPS без сетевых блокировок ОС.
- Переход на клиент-серверный режим (СУБД): Переведем центральную информационную базу на работу с сервером 1С:Предприятия и СУБД (PostgreSQL, Microsoft SQL Server). В клиент-серверном варианте управление транзакциями и блокировками записей переходит СУБД, что исключает падения базы и конфликты на уровне файловой системы.