Как решить проблему с торможением 1С 7.7 на Windows 10 в сетевом режиме?

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

Работа со старыми версиями программного обеспечения на современных операционных системах часто преподносит неприятные сюрпризы. Классический пример — функционирование файловой базы данных 1С:Предприятие 7.7 (DBF) в локальной сети, где совместно работают компьютеры под управлением Windows XP и Windows 10. В одиночном режиме на Windows 10 база «летает», но стоит подключиться пользователю со старой операционной системой, как скорость выполнения отчетов на Windows 10 падает в десятки раз — например, с 15 секунд до 4 минут. Проанализируем физику этого процесса и разберем по шагам все доступные методы решения данной проблемы.

Выясним причину: почему падает скорость сетевого обмена?

Основная причина такого поведения кроется в кардинальном различии сетевых протоколов и механизмов кэширования в разных поколениях ОС Windows. Давайте разберем этот механизм подробнее:

  1. Конфликт версий протокола SMB. Windows XP работает по устаревшему протоколу SMBv1. Windows 10 по умолчанию использует современные и безопасные протоколы SMBv2 и SMBv3. При совместном доступе к одной сетевой папке операционной системе сервера приходится постоянно переключаться и согласовывать разные механизмы сетевого обмена, что приводит к колоссальным задержкам.
  2. Сброс оппортунистических блокировок (Oplocks). Когда база 1С 7.7 запущена на Windows 10 в монопольном режиме (или просто нет других активных пользователей), операционная система задействует агрессивный локальный кэш. Файлы базы данных блокируются локально, и большинство операций чтения/записи происходит в оперативной памяти клиента. Как только к базе подключается второй пользователь (особенно со старой ОС), система сетевого кэширования Windows принудительно отключает эти кэши, чтобы предотвратить рассинхронизацию и повреждение таблиц .dbf и индексных файлов .cdx.
  3. Огромное количество мелких запросов. Архитектура файловой 1С 7.7 устроена так, что при проведении документов или формировании отчетов платформа совершает сотни тысяч мелких запросов чтения/записи к сетевым файлам. Без локального кэширования каждый такой микрозапрос отправляется напрямую по сети на файловый сервер. Время отклика (ping) сети в 1–2 миллисекунды, помноженное на 100 000 операций, превращается в минуты ожидания.

Рассмотрим практические методы устранения этих тормозов — от тонкой настройки сетевых параметров до кардинальной смены архитектуры работы.

Решение 1. Тонкая настройка сетевого кэширования (SMB2/SMB3) в Windows 10

Если мы не можем избежать совместной работы по сети, попробуем заставить сетевой клиент Windows 10 работать с кэшем метаданных более агрессивно, без задержек на постоянное согласование с сервером. Для этого внесем изменения в системный реестр на всех клиентских машинах с Windows 10.

Выполним следующие шаги:

  1. Нажмите комбинацию клавиш Win + R, введите regedit и нажмите Enter.
  2. Перейдите по следующему пути реестра:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
  3. Создайте три параметра типа DWORD (32 бита) со значением 0 (ноль):
    • DirectoryCacheLifetime — отключает задержку кэширования информации о структуре папок.
    • FileInfoCacheLifetime — отключает кэширование свойств файлов.
    • FileNotFoundCacheLifetime — отключает запоминание отсутствующих файлов в сетевой папке.

Для быстрой настройки мы можем создать текстовый файл с расширением .reg и применить его на компьютерах пользователей:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanworkstation\Parameters]
"DirectoryCacheLifetime"=dword:00000000
"FileInfoCacheLifetime"=dword:00000000
"FileNotFoundCacheLifetime"=dword:00000000

После внесения изменений обязательно выполните перезагрузку компьютеров. Это заставит Windows 10 моментально получать актуальное состояние файлов базы данных, минуя сетевые задержки пересогласования кэша.

Решение 2. Оптимизация параметров сетевых карт и стека TCP/IP

Современные сетевые адаптеры обладают множеством интеллектуальных функций разгрузки процессора и энергосбережения. К сожалению, для специфического «мелкопакетного» трафика 1С 7.7 эти функции часто оказываются губительными. Оптимизируем настройки сетевых карт на Windows 10.

Откроем Диспетчер устройств, найдем сетевой адаптер, перейдем в его «Свойства» на вкладку «Дополнительно» и отключим следующие параметры:

Также отключим автоподстройку TCP на уровне операционной системы. Для этого запустим командную строку от имени Администратора и выполним команду:

netsh int tcp set global autotuninglevel=disabled

Это зафиксирует размер окна приема TCP и предотвратит искусственное ограничение пропускной способности при обработке трафика баз данных.

Решение 3. Использование терминального сервера (RDP) — самое надежное решение

Все сетевые оптимизации реестра и сетевых карт лишь частично снижают задержки. Единственным по-настоящему профессиональным решением для стабильной работы 1С 7.7 является переход на терминальный сервер. В этом случае база данных и исполняемые файлы 1cv7.exe находятся физически на одном диске сервера (или в быстрой локальной сети виртуализации), а клиенты получают лишь картинку рабочего стола по протоколу RDP.

Проанализируем варианты реализации терминального доступа:

  1. Выделенный сервер на Windows Server. Мы можем развернуть операционную систему Windows Server (например, 2012 R2, 2016 или более свежую) и активировать роль Служб удаленных рабочих столов (RDS). База размещается на SSD-накопителе сервера, пользователи заходят в терминальные сессии и работают без малейших сетевых задержек. Подойдет даже старый серверный дистрибутив Windows Server 2003, который работает с DBF-файлами крайне агрессивно и быстро.
  2. Терминальный режим на базе клиентской ОС. Для небольших рабочих групп (3–5 пользователей) системные администраторы часто используют специализированные утилиты (например, RDP Wrapper), которые позволяют превратить обычную Windows 10 или Windows 7 в многопользовательский терминальный сервер. Каждый пользователь подключается под своей учетной записью по RDP. Тормоза полностью исчезают, так как весь файловый обмен происходит внутри одной операционной системы. Обратите внимание: использование подобных модификаторов может нарушать лицензионное соглашение Microsoft для клиентских ОС, поэтому данный способ применяется только на собственный страх и риск.

Решение 4. Развертывание виртуальной машины со старой ОС

Если бюджет компании не позволяет приобрести современную серверную лицензию Windows Server, отличным выходом будет использование виртуализации. На современный мощный компьютер с Windows 10 устанавливается гипервизор (например, бесплатный VirtualBox или встроенный Hyper-V).

Внутри гипервизора разворачивается виртуальная машина со старой операционной системой:

Вся база данных 1С размещается внутри виртуальной машины. Пользователи подключаются к сетевой папке этой "виртуалки". За счет локализации сетевых протоколов внутри гипервизора скорость работы значительно возрастает.

Решение 5. Тонкая настройка Samba на файловом сервере Linux

Если в качестве файлового сервера в вашей компании используется Linux-машина с установленным пакетом Samba, проблему сетевых задержек DBF-базы можно решить на уровне конфигурационного файла smb.conf. Нам нужно эмулировать логику работы старых серверов Windows, отключив современные методы многопользовательских блокировок.

Откроем конфигурационный файл /etc/samba/smb.conf и добавим в секцию описания сетевой папки с базой 1С следующие параметры:


[1c_base]
path = /mnt/data/1c_base
writable = yes
guest ok = no
locking = yes
strict locking = no
oplocks = no
level2 oplocks = no
share modes = yes

Разберем назначение этих директив:

Решение 6. Решение проблемы «Порядок сортировки отличается от системного»

При переносе базы данных 1С 7.7 на компьютер с Windows 10 или при активном сетевом взаимодействии с современными ОС вы обязательно столкнетесь со стандартной ошибкой сортировки кодовой страницы таблиц. Это связано с тем, что в Windows 10 изменились региональные стандарты сравнения строк.

Существует три способа обойти эту ошибку:

  1. Использование файла-флага (самый простой и надежный метод). Откройте каталог с установленной платформой 1С 7.7 (обычно это C:\Program Files (x86)\1Cv77\bin\) или сам каталог базы данных. Создайте в этой папке пустой текстовый файл и переименуйте его, изменив имя и расширение на ordnochk.lnk. Наличие этого файла в каталоге заставляет платформу полностью игнорировать проверку системного порядка сортировки при запуске.
  2. Изменение кодовой страницы ИБ в Конфигураторе. Запустите 1С 7.7 в режиме «Конфигуратор» монопольно. Перейдите в меню Администрирование -> Кодовая страница таблиц ИБ. В самом низу открывшегося списка выберите пункт «Текущая системная установка» и нажмите «ОК». Программа переиндексирует все таблицы под стандарты текущей операционной системы.
  3. Коррекция региональных стандартов Windows 10. Откройте Панель управления Windows 10 -> раздел «Региональные стандарты» -> вкладка «Дополнительно» -> кнопка «Изменить язык системы». Убедитесь, что выбран Русский язык, и обязательно снимите галочку с параметра «Использовать Юникод UTF-8 для поддержки языков во всем мире». После этого перезагрузите компьютер.

Подведем итоги

Мы детально проанализировали проблему сетевых тормозов 1С 7.7 на Windows 10 и рассмотрели различные варианты борьбы с ней. Для достижения наилучшего результата рекомендуем придерживаться следующей стратегии:

← На главную