← На главную
При совместной работе с файловой информационной базой 1С через общий сетевой ресурс (каталог SMB) пользователи часто сталкиваются с ситуацией, когда один сотрудник работает быстро, но как только к базе подключается второй пользователь, скорость работы катастрофически падает. Запуск программы затягивается на несколько минут, проведение документов сопровождается долгими «зависаниями», а сетевой трафик резко возрастает. Разберем архитектурные причины такого поведения операционной системы и платформы 1С, а также рассмотрим пошаговые методы устранения проблемы.
Причины падения производительности: механизм блокировок и кэширование Windows
Проанализируем, почему один и тот же файл 1Cv8.1CD при локальном запуске работает быстро, а при доступе по сети начинает зависать. Дело заключается в механизмах сетевой файловой системы Windows (SMB):
- Сброс оппортунистических блокировок (SMB Oplocks / Leases). Когда файл открыт монопольно одним компьютером, операционная система хоста выдает клиенту оппортунистическую блокировку. Клиент кэширует чтение и запись в локальную оперативную память. Как только к общему файлу обращается второй пользователь, хост отзывает исключительную блокировку. С этого момента локальное кэширование полностью отключается: абсолютно каждый запрос чтения, записи и проверки диапазонных блокировок (byte-range locks) выполняется синхронно через сеть в режиме реального времени.
- Диапазонные блокировки 1С. В файловом режиме СУБД 1С реализует транзакционность через непрерывную установку блокировок на участки файла базы данных. При проведении документа или записи данных система обращается к десяткам и сотням таблиц, что генерирует миллионы мелких сетевых пакетов. Даже небольшая задержка (latency) сетевого стека мультиплицируется и выливается в минуты ожидания.
- Несоответствие версий платформ. Работа нескольких пользователей с одним файлом базы данных под разными релизами платформы (например, совмещение версий 8.1 и 8.2) недопустима. Разные платформы используют несовместимые внутренние механизмы и алгоритмы блокировок, что приводит к конфликтам доступа и блокированию системных вызовов.
Шаг 1. Унификация версии платформы 1С
Первым делом приведем инфраструктуру к единому стандарту. Разберем обязательные действия:
- Проверим релизы платформы на всех клиентских машинах и на компьютере, где физически хранится файл базы.
- Установим на все рабочие места строго одинаковую версию технологической платформы.
- Убедимся, что ярлыки запуска на клиентских ПК обращаются к единому исполняемому файлу соответствующей версии.
Шаг 2. Публикация базы на веб-сервере (рекомендуемый способ)
Самое эффективное и архитектурно правильное решение для файловых баз при работе на управляемых формах — развертывание веб-сервера (IIS или Apache). Рассмотрим, почему этот вариант устраняет сетевые зависания:
- Весь файловый ввод-вывод к
1Cv8.1CD выполняется локально на том компьютере, где запущен веб-сервер, минуя протокол SMB.
- Клиенты подключаются через тонкий клиент или браузер по протоколу HTTP/HTTPS, передавая только полезные данные, а не блокировки физического файла.
- Отпадает необходимость предоставлять общий сетевой доступ к каталогу с базой, что существенно повышает безопасность и отказоустойчивость.
Шаг 3. Организация терминального доступа (RDP)
Если конфигурация работает на обычных формах или перевод на веб-сервер невозможен, используем подключение через удаленный рабочий стол:
- Разместим базу данных на сервере терминалов (или выделенном ПК).
- Настроим сеансы пользователей по протоколу RDP, чтобы платформа 1С запускалась локально внутри операционной системы хоста.
- В этом случае работа с файлом базы происходит напрямую через локальную дисковую подсистему без участия сетевого протокола SMB и потери производительности на межсетевых блокировках.
Шаг 4. Оптимизация сети и файлового хранилища
Если временным решением остается прямой сетевой доступ через общую папку, выполним ряд аппаратных и системных настроек:
- Замена оборудования. Использование устаревших сетевых концентраторов (хабов) на 100 Мбит/с категорически неприемлемо. Заменим хаб на гигабитный коммутатор (switch) с пропускной способностью 1 Гбит/с, чтобы устранить коллизии пакетов.
- Перенос базы на твердотельный накопитель (SSD). Поскольку при отключении кэширования дисковые операции выполняются напрямую, скорость случайного чтения и записи становится критической. Перенос базы на SSD многократно ускоряет обработку файловых транзакций.
- Исключение из индексации и антивирусной проверки. На хосте с базой добавим каталог с файлом
1Cv8.1CD в исключения антивируса. Также отключим службу Windows Search для каталога с базой, чтобы исключить паразитные блокировки файла поисковым индексом.
- Отключение автономных файлов. Проверим Центр синхронизации Windows и убедимся, что для сетевого ресурса отключен механизм «Автономные файлы», вызывающий заморозку транзакций при создании теневых копий.
Шаг 5. Тонкая настройка сетевого стека Windows
Для предотвращения «залипания» кэша метаданных каталогов и сетевых пакетов на клиентских машинах внесем корректировки в системный реестр и свойства сетевых адаптеров.
В ветке реестра HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters создадим параметры типа REG_DWORD со значением 0:
DirectoryCacheLifetime — отключает кэширование каталогов SMB.
FileInfoCacheLifetime — исключает задержки обновления информации о файле базы.
FileNotFoundCacheLifetime — предотвращает зависания при проверке существования файлов блокировок.
В свойствах сетевой карты на хосте и клиентских рабочих станциях перейдем во вкладку «Дополнительно» и отключим следующие опции:
Large Send Offload (LSO) — отключаем аппаратную разгрузку сегментации TCP, часто вызывающую сбои при передаче SMB-пакетов.
Energy Efficient Ethernet / Green Ethernet — отключаем энергосбережение сетевой карты для предотвращения секундных пауз при передаче данных.
- Во вкладке «Управление электропитанием» снимем флаг «Разрешить отключение этого устройства для экономии энергии».
Также вместо разрешения имен NetBIOS (обращения вида \\SERVER\Base1C) укажем прямой статический IP-адрес хоста (например, \\192.168.1.50\Base1C), что исключит задержки широковещательных сетевых запросов при инициализации сессии 1С.