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

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Причина падения производительности файлового движка 1С 7.7

Проанализируем механику работы файловой версии 1С 7.7. Платформа использует движок управления таблицами DBF/CDX (CodeBase), рассчитанный на прямую работу с файлами через сетевую файловую систему:

  1. Сброс локального кэширования при переходе в многопользовательский режим: Пока в базе работает один пользователь, операционная система хоста и клиента применяет монопольные блокировки и механизм OpLocks (Opportunistic Locking). Вся информация активно кэшируется в оперативной памяти клиентского компьютера, и чтения с диска минимизируются.
  2. Переключение в режим разделяемого доступа: В момент входа второго пользователя операционная система сбрасывает оппортунистические блокировки. Чтобы обеспечить целостность данных между двумя рабочими местами, локальное кэширование отключается. Каждое обращение к справочнику или таблице индексов начинает транслироваться через сеть в виде сотен и тысяч мелких сетевых запросов блокировки и чтения байтовых диапазонов файлов.
  3. Несовместимость с протоколами SMB2/SMB3: Платформа 1С 7.7 проектировалась во времена SMB 1.0 (Windows NT / 2000 / NetWare). Современные механизмы кэширования метаданных и управления перенаправителем SMB в Windows 7 и выше вызывают избыточные паузы и конфликты при постоянных мелких блокировках файлов DBF.

Способ 1. Настройка параметров реестра Windows и протокола SMB

Разберем по шагам оптимизацию сетевого стека Windows на сервере (компьютере, где физически хранится база данных) и клиентских машинах.

  1. Отключение кэширования перенаправителя SMB2: На клиентских рабочих станциях перейдем в ветку реестра HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters и создадим три параметра типа DWORD (32 бита) со значением 0:
    1. DirectoryCacheLifetime = 0
    2. FileInfoCacheLifetime = 0
    3. FileNotFoundCacheLifetime = 0
    Это заставляет систему не удерживать устаревшие метаданные каталогов и исключает микрозадержки при проверке актуальности файлов базы.
  2. Отключение механизма OpLocks: Чтобы исключить постоянную дорогостоящую смену режимов блокировок:
    1. На компьютере-сервере в ветке HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters установим параметр EnableOpLocks типа DWORD в значение 0.
    2. На клиентских машинах в ветке HKLM\System\CurrentControlSet\Services\MRxSmb\Parameters установим OplocksDisabled типа DWORD в значение 1.
  3. Приоритет системного кэша для файлового сервера: На компьютере с базой в ветке HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management установим LargeSystemCache со значением 1, а в ветке HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters зададим Size со значением 3 (оптимизация работы файлового сервера для сетевых приложений).

Способ 2. Оптимизация сетевых протоколов и параметров адаптера

Посмотрим на настройки низкоуровневой передачи данных TCP/IP, которые могут снижать скорость при передаче множества мелких пакетов:

  1. Отключение автоподстройки окна TCP: Откроем командную строку от имени администратора и выполним команды:
    1. netsh interface tcp set global autotuninglevel=disabled
    2. netsh interface tcp set global chimney=disabled
    3. netsh interface tcp set global rss=disabled
  2. Настройка свойств сетевой карты: В диспетчере устройств откроем свойства сетевого адаптера и на вкладке «Дополнительно» отключим технологии энергосбережения (Green Ethernet, Energy Efficient Ethernet) и разгрузку отправки больших пакетов (Large Send Offload / LSO). На вкладке «Управление электропитанием» снимем флаг «Разрешить отключение этого устройства для экономии энергии».
  3. Отключение неиспользуемых компонентов: В свойствах сетевого подключения снимем галочку с протокола IPv6, если локальная сеть построена исключительно на IPv4. В компонентах Windows отключим службу «Дистанционное дифференциальное сжатие» (Remote Differential Compression).

Способ 3. Переход на терминальный доступ (RDP)

Рассмотрим наиболее надежный и производительный архитектурный подход для 1С 7.7. При терминальном доступе все копии программы выполняются локально на сервере, где лежат файлы базы данных:

  1. Сетевой трафик между базой и клиентами полностью исключается, так как обмен с диском происходит на уровне локальной шины и оперативной памяти сервера.
  2. По сети передаются только видеоизображение и события клавиатуры/мыши.
  3. Если на рабочих местах используются торговые аппараты или сканеры, подключенные через последовательные порты, в клиенте удаленного рабочего стола настраивается проброс COM-портов на удаленный сеанс.

Способ 4. Использование клиент-серверной архитектуры или УРБД

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

  1. Перевод конфигурации на MS SQL Server: Переход на версию 1С:Предприятие 7.7 для SQL полностью устраняет проблему файловых блокировок SMB. СУБД самостоятельно управляет параллельными транзакциями, строковыми блокировками и кэшированием страниц.
  2. Управление распределенными информационными базами (УРБД): На каждом автономном рабочем месте (например, на кассе) разворачивается локальная копия информационной базы. Обмен данными между кассами и учетной базой настраивается через регламентную выгрузку и загрузку файлов изменений с заданной периодичностью. Это гарантирует максимальное быстродействие кассовых узлов и их независимость от сетевых сбоев.
← На главную