Почему зависает файловая база 1С по сети при подключении второго пользователя и как это исправить?

Системный администратор
← На главную

При совместной работе с файловой информационной базой 1С через общий сетевой ресурс (каталог SMB) пользователи часто сталкиваются с ситуацией, когда один сотрудник работает быстро, но как только к базе подключается второй пользователь, скорость работы катастрофически падает. Запуск программы затягивается на несколько минут, проведение документов сопровождается долгими «зависаниями», а сетевой трафик резко возрастает. Разберем архитектурные причины такого поведения операционной системы и платформы 1С, а также рассмотрим пошаговые методы устранения проблемы.

Причины падения производительности: механизм блокировок и кэширование Windows

Проанализируем, почему один и тот же файл 1Cv8.1CD при локальном запуске работает быстро, а при доступе по сети начинает зависать. Дело заключается в механизмах сетевой файловой системы Windows (SMB):

  1. Сброс оппортунистических блокировок (SMB Oplocks / Leases). Когда файл открыт монопольно одним компьютером, операционная система хоста выдает клиенту оппортунистическую блокировку. Клиент кэширует чтение и запись в локальную оперативную память. Как только к общему файлу обращается второй пользователь, хост отзывает исключительную блокировку. С этого момента локальное кэширование полностью отключается: абсолютно каждый запрос чтения, записи и проверки диапазонных блокировок (byte-range locks) выполняется синхронно через сеть в режиме реального времени.
  2. Диапазонные блокировки 1С. В файловом режиме СУБД 1С реализует транзакционность через непрерывную установку блокировок на участки файла базы данных. При проведении документа или записи данных система обращается к десяткам и сотням таблиц, что генерирует миллионы мелких сетевых пакетов. Даже небольшая задержка (latency) сетевого стека мультиплицируется и выливается в минуты ожидания.
  3. Несоответствие версий платформ. Работа нескольких пользователей с одним файлом базы данных под разными релизами платформы (например, совмещение версий 8.1 и 8.2) недопустима. Разные платформы используют несовместимые внутренние механизмы и алгоритмы блокировок, что приводит к конфликтам доступа и блокированию системных вызовов.

Шаг 1. Унификация версии платформы 1С

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

  1. Проверим релизы платформы на всех клиентских машинах и на компьютере, где физически хранится файл базы.
  2. Установим на все рабочие места строго одинаковую версию технологической платформы.
  3. Убедимся, что ярлыки запуска на клиентских ПК обращаются к единому исполняемому файлу соответствующей версии.

Шаг 2. Публикация базы на веб-сервере (рекомендуемый способ)

Самое эффективное и архитектурно правильное решение для файловых баз при работе на управляемых формах — развертывание веб-сервера (IIS или Apache). Рассмотрим, почему этот вариант устраняет сетевые зависания:

  1. Весь файловый ввод-вывод к 1Cv8.1CD выполняется локально на том компьютере, где запущен веб-сервер, минуя протокол SMB.
  2. Клиенты подключаются через тонкий клиент или браузер по протоколу HTTP/HTTPS, передавая только полезные данные, а не блокировки физического файла.
  3. Отпадает необходимость предоставлять общий сетевой доступ к каталогу с базой, что существенно повышает безопасность и отказоустойчивость.

Шаг 3. Организация терминального доступа (RDP)

Если конфигурация работает на обычных формах или перевод на веб-сервер невозможен, используем подключение через удаленный рабочий стол:

  1. Разместим базу данных на сервере терминалов (или выделенном ПК).
  2. Настроим сеансы пользователей по протоколу RDP, чтобы платформа 1С запускалась локально внутри операционной системы хоста.
  3. В этом случае работа с файлом базы происходит напрямую через локальную дисковую подсистему без участия сетевого протокола SMB и потери производительности на межсетевых блокировках.

Шаг 4. Оптимизация сети и файлового хранилища

Если временным решением остается прямой сетевой доступ через общую папку, выполним ряд аппаратных и системных настроек:

  1. Замена оборудования. Использование устаревших сетевых концентраторов (хабов) на 100 Мбит/с категорически неприемлемо. Заменим хаб на гигабитный коммутатор (switch) с пропускной способностью 1 Гбит/с, чтобы устранить коллизии пакетов.
  2. Перенос базы на твердотельный накопитель (SSD). Поскольку при отключении кэширования дисковые операции выполняются напрямую, скорость случайного чтения и записи становится критической. Перенос базы на SSD многократно ускоряет обработку файловых транзакций.
  3. Исключение из индексации и антивирусной проверки. На хосте с базой добавим каталог с файлом 1Cv8.1CD в исключения антивируса. Также отключим службу Windows Search для каталога с базой, чтобы исключить паразитные блокировки файла поисковым индексом.
  4. Отключение автономных файлов. Проверим Центр синхронизации Windows и убедимся, что для сетевого ресурса отключен механизм «Автономные файлы», вызывающий заморозку транзакций при создании теневых копий.

Шаг 5. Тонкая настройка сетевого стека Windows

Для предотвращения «залипания» кэша метаданных каталогов и сетевых пакетов на клиентских машинах внесем корректировки в системный реестр и свойства сетевых адаптеров.

В ветке реестра HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters создадим параметры типа REG_DWORD со значением 0:

  1. DirectoryCacheLifetime — отключает кэширование каталогов SMB.
  2. FileInfoCacheLifetime — исключает задержки обновления информации о файле базы.
  3. FileNotFoundCacheLifetime — предотвращает зависания при проверке существования файлов блокировок.

В свойствах сетевой карты на хосте и клиентских рабочих станциях перейдем во вкладку «Дополнительно» и отключим следующие опции:

  1. Large Send Offload (LSO) — отключаем аппаратную разгрузку сегментации TCP, часто вызывающую сбои при передаче SMB-пакетов.
  2. Energy Efficient Ethernet / Green Ethernet — отключаем энергосбережение сетевой карты для предотвращения секундных пауз при передаче данных.
  3. Во вкладке «Управление электропитанием» снимем флаг «Разрешить отключение этого устройства для экономии энергии».

Также вместо разрешения имен NetBIOS (обращения вида \\SERVER\Base1C) укажем прямой статический IP-адрес хоста (например, \\192.168.1.50\Base1C), что исключит задержки широковещательных сетевых запросов при инициализации сессии 1С.

← На главную