При организации многопользовательской работы с файловой информационной базой 1С:Предприятие через стандартный сетевой доступ (общую папку Windows) нередко возникает ситуация, когда на локальном компьютере база запускается мгновенно, а на сетевых клиентах режим «1С:Предприятие» зависает на этапе запуска или выбора пользователя. При этом в диспетчере задач фиксируется постоянная сетевая активность процесса 1cv8.exe, а при одновременной работе нескольких пользователей начинаются критические зависания при открытии форм и проведении документов.
Разберем технические причины такого поведения в современных десктопных редакциях Windows, проанализируем методику локализации сбоев и рассмотрим проверенные способы восстановления стабильной работы пользователей.
Выясним причину проблемы на уровне архитектуры файловой СУБД 1С и сетевого протокола SMB:
1Cv8.1CD. Любая транзакция или чтение данных блокирует определенные диапазоны байт файла. При локальной работе ядро ОС обрабатывает такие блокировки мгновенно, но при работе по сети каждый запрос на блокировку и снятие блокировки превращается в сетевой вызов (RPC over SMB). В момент старта программы выполняются десятки тысяч таких запросов, что перегружает сетевой стек.spoolsv.exe) могут блокировать дескрипторы файлов или сетевые вызовы в момент инициализации сеанса.Прежде чем менять системные настройки, определим, какой именно процесс или системный вызов блокирует запуск программы на клиентской машине:
Ctrl + Shift + Esc).1cv8.exe (или 1cv8c.exe для тонкого клиента).spoolsv.exe), локализуем источник сбоя. В случае со службой печати достаточно очистить системную папку C:\Windows\System32\spool\PRINTERS и перезапустить службу.Для минимизации задержек и исключения рассинхронизации кэша выполним корректировку параметров сети и реестра Windows на клиентских ПК и на компьютере, где физически хранится база.
1. Отключение кэширования метаданных SMB на клиентских ПК:
Запустим редактор реестра regedit и перейдем в ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
Создадим или изменим следующие параметры типа DWORD (32 бита) со значением 0:
DirectoryCacheLifetime = 0FileInfoCacheLifetime = 0FileNotFoundCacheLifetime = 0Эти ключи отключают локальное кэширование структуры каталогов на клиенте, заставляя SMB обращаться за актуальным состоянием файла базы напрямую к хосту.
2. Отключение механизма SMB Leasing на компьютере с базой:
Запустим консоль PowerShell от имени администратора и выполним команду:
Set-SmbServerConfiguration -EnableLeasing $false -Force
3. Настройка параметров TCP и сетевой карты:
В командной строке (cmd), запущенной от имени администратора, выполним команды для стабилизации сетевых очередей:
netsh interface tcp set global autotuninglevel=restricted
netsh interface tcp set global rss=disabled
В Диспетчере устройств откроем свойства сетевого адаптера, перейдем на вкладку Дополнительно и отключим энергосберегающие функции и аппаратную разгрузку: Large Send Offload (LSO), Energy Efficient Ethernet и Interrupt Moderation.
4. Исключение базы из индексации:
Откроем Параметры индексирования Windows на хосте и исключим папку с информационной базой и файлы с расширением .1CD из области поиска Windows Search.
Работа с общей папкой через SMB является устаревшим и наименее надежным способом подключения. Штатной и бесплатной альтернативой является публикация файловой базы на веб-сервере (IIS или Apache).
Рассмотрим преимущества данного подхода:
1Cv8.1CD выполняет веб-сервер локально на том компьютере, где база хранится.Разберем порядок публикации:
Если количество активных пользователей превышает 3–5 человек либо база данных интенсивно растет, наиболее надежным решением является перевод базы в клиент-серверный режим.
Для небольших рабочих групп оптимальным решением является связка бесплатной СУБД (например, Microsoft SQL Server Express или PostgreSQL) и лицензии 1С:Предприятие 8.3 Сервер МИНИ (до 5 подключений). Это полностью устраняет любые проблемы с сетевыми блокировками файлов, обеспечивает транзакционную целостность данных и защищает базу от повреждений при аварийном отключении клиентских машин.