← На главную
При организации совместной работы с файловой базой данных 1С:Предприятие 7.7 (формат DBF) системные администраторы часто сталкиваются с резким падением производительности: когда в базе находится только один пользователь, программа работает быстро, но как только к базе подключается второй клиент, открытие справочников, документов и проведение операций начинает занимать несколько секунд. Разберем причины такого поведения и рассмотрим комплексные методы устранения задержек.
Причина падения производительности файлового движка 1С 7.7
Проанализируем механику работы файловой версии 1С 7.7. Платформа использует движок управления таблицами DBF/CDX (CodeBase), рассчитанный на прямую работу с файлами через сетевую файловую систему:
- Сброс локального кэширования при переходе в многопользовательский режим: Пока в базе работает один пользователь, операционная система хоста и клиента применяет монопольные блокировки и механизм
OpLocks (Opportunistic Locking). Вся информация активно кэшируется в оперативной памяти клиентского компьютера, и чтения с диска минимизируются.
- Переключение в режим разделяемого доступа: В момент входа второго пользователя операционная система сбрасывает оппортунистические блокировки. Чтобы обеспечить целостность данных между двумя рабочими местами, локальное кэширование отключается. Каждое обращение к справочнику или таблице индексов начинает транслироваться через сеть в виде сотен и тысяч мелких сетевых запросов блокировки и чтения байтовых диапазонов файлов.
- Несовместимость с протоколами SMB2/SMB3: Платформа 1С 7.7 проектировалась во времена SMB 1.0 (Windows NT / 2000 / NetWare). Современные механизмы кэширования метаданных и управления перенаправителем SMB в Windows 7 и выше вызывают избыточные паузы и конфликты при постоянных мелких блокировках файлов DBF.
Способ 1. Настройка параметров реестра Windows и протокола SMB
Разберем по шагам оптимизацию сетевого стека Windows на сервере (компьютере, где физически хранится база данных) и клиентских машинах.
- Отключение кэширования перенаправителя SMB2: На клиентских рабочих станциях перейдем в ветку реестра
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters и создадим три параметра типа DWORD (32 бита) со значением 0:
DirectoryCacheLifetime = 0
FileInfoCacheLifetime = 0
FileNotFoundCacheLifetime = 0
Это заставляет систему не удерживать устаревшие метаданные каталогов и исключает микрозадержки при проверке актуальности файлов базы.
- Отключение механизма OpLocks: Чтобы исключить постоянную дорогостоящую смену режимов блокировок:
- На компьютере-сервере в ветке
HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters установим параметр EnableOpLocks типа DWORD в значение 0.
- На клиентских машинах в ветке
HKLM\System\CurrentControlSet\Services\MRxSmb\Parameters установим OplocksDisabled типа DWORD в значение 1.
- Приоритет системного кэша для файлового сервера: На компьютере с базой в ветке
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management установим LargeSystemCache со значением 1, а в ветке HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters зададим Size со значением 3 (оптимизация работы файлового сервера для сетевых приложений).
Способ 2. Оптимизация сетевых протоколов и параметров адаптера
Посмотрим на настройки низкоуровневой передачи данных TCP/IP, которые могут снижать скорость при передаче множества мелких пакетов:
- Отключение автоподстройки окна TCP: Откроем командную строку от имени администратора и выполним команды:
netsh interface tcp set global autotuninglevel=disabled
netsh interface tcp set global chimney=disabled
netsh interface tcp set global rss=disabled
- Настройка свойств сетевой карты: В диспетчере устройств откроем свойства сетевого адаптера и на вкладке «Дополнительно» отключим технологии энергосбережения (
Green Ethernet, Energy Efficient Ethernet) и разгрузку отправки больших пакетов (Large Send Offload / LSO). На вкладке «Управление электропитанием» снимем флаг «Разрешить отключение этого устройства для экономии энергии».
- Отключение неиспользуемых компонентов: В свойствах сетевого подключения снимем галочку с протокола
IPv6, если локальная сеть построена исключительно на IPv4. В компонентах Windows отключим службу «Дистанционное дифференциальное сжатие» (Remote Differential Compression).
Способ 3. Переход на терминальный доступ (RDP)
Рассмотрим наиболее надежный и производительный архитектурный подход для 1С 7.7. При терминальном доступе все копии программы выполняются локально на сервере, где лежат файлы базы данных:
- Сетевой трафик между базой и клиентами полностью исключается, так как обмен с диском происходит на уровне локальной шины и оперативной памяти сервера.
- По сети передаются только видеоизображение и события клавиатуры/мыши.
- Если на рабочих местах используются торговые аппараты или сканеры, подключенные через последовательные порты, в клиенте удаленного рабочего стола настраивается проброс COM-портов на удаленный сеанс.
Способ 4. Использование клиент-серверной архитектуры или УРБД
Если специфика рабочих мест не позволяет использовать стандартный терминальный сервер, проанализируем альтернативные технические варианты:
- Перевод конфигурации на MS SQL Server: Переход на версию 1С:Предприятие 7.7 для SQL полностью устраняет проблему файловых блокировок SMB. СУБД самостоятельно управляет параллельными транзакциями, строковыми блокировками и кэшированием страниц.
- Управление распределенными информационными базами (УРБД): На каждом автономном рабочем месте (например, на кассе) разворачивается локальная копия информационной базы. Обмен данными между кассами и учетной базой настраивается через регламентную выгрузку и загрузку файлов изменений с заданной периодичностью. Это гарантирует максимальное быстродействие кассовых узлов и их независимость от сетевых сбоев.