Почему файловая база 1С долго открывается у второго и последующих пользователей по сети?

Системный администратор 1С v8.3 (Обычные формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

Разберем классическую для файловых баз 1С ситуацию: информационная база расположена в общей сетевой папке на одном из компьютеров. Первый пользователь входит в программу мгновенно за считанные секунды. Однако как только к базе пытается подключиться второй или третий сотрудник, время старта программы многократно увеличивается и доходит до 5–10 минут. При этом сетевая загрузка не превышает 5%, тесты скорости передачи файлов показывают отличные результаты, а размер базы может быть небольшим (от 300 МБ до пары гигабайт).

Проанализируем технические причины такого поведения файловой СУБД 1Cv8.1CD и рассмотрим пошаговые методы устранения проблемы.

Причины замедления: механизм блокировок Oplocks и структура файла

Выясним причину, почему первый сеанс стартует быстро, а последующие зависают. В операционных системах семейства Windows при сетевом доступе к файлам по протоколу SMB задействуется механизм оппортунистических блокировок (Opportunistic Locks / Oplocks).

Когда первый пользователь открывает базу данных по сети, операционная система хоста предоставляет ему монопольную блокировку. Это позволяет клиенту активно кэшировать данные локально в оперативной памяти и считывать информацию крупными блоками. Но как только к файлу 1Cv8.1CD обращается второй пользователь, операционная система принудительно отзывает монопольную блокировку (происходит процедура oplock break). Локальное кэширование отключается, и файловая система переходит в режим блокировки диапазонов байт (byte-range locks).

Файловая система 1С начинает запрашивать данные мелкими порциями по 4 КБ. Вместо непрерывной передачи данных сеть начинает непрерывно ожидать подтверждений доставки пакетов (latency/RTT). По этой причине сетевая карта простаивает на уровне 2–5%, а запуск превращается в мучительное ожидание. Ситуация усугубляется внутренней фрагментацией страниц базы, разрастанием журнала регистрации и устаревшим протоколом SMB 1.0 на старых операционных системах.

Способ 1. Пересборка метаданных и структуры базы данных

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

  1. Создадим резервную копию базы данных.
  2. Запустим программу в режиме Конфигуратор.
  3. Выгрузим рабочую конфигурацию в файл через меню Конфигурация — Сохранить конфигурацию в файл....
  4. Загрузим конфигурацию из чистого архива или накатим сохраненный файл через Конфигурация — Загрузить конфигурацию из файла... с заменой всех объектов.
  5. Применим изменения в базе данных.

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

  1. В Конфигураторе выберем пункт Администрирование — Выгрузить информационную базу... (формируется файл с расширением .dt).
  2. Создадим абсолютно новую пустую информационную базу в отдельной сетевой папке.
  3. Загрузим полученный файл через меню Администрирование — Загрузить информационную базу.... В результате создается полностью пересобранный файл 1Cv8.1CD с оптимизированными индексами и отсутствием фрагментированных таблиц.
  4. Выполним пункт Администрирование — Тестирование и исправление... с установленной галочкой Сжатие таблиц информационной базы.

Способ 2. Отключение оппортунистических блокировок (Oplocks)

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

  1. На компьютере, где физически хранится папка с базой данных, откроем редактор реестра regedit.
  2. Перейдем в ветку реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters.
  3. Создадим параметр типа DWORD с именем EnableOpLocks и присвоим ему значение 0.
  4. В этой же ветке установим параметр Size (тип DWORD) со значением 3, что настроит буферы операционной системы для работы в режиме файлового сервера.
  5. На компьютерах клиентов в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters создадим параметр EnableOplocks со значением 0 (для устаревших ОС также задается UseOpportunisticLocking со значением 0).
  6. Перезагрузим все компьютеры для применения изменений.

Способ 3. Очистка кэша на клиентских компьютерах

Посмотрим на пример пакетного файла для гарантированного удаления временных файлов и пользовательского кэша платформы, повреждение которых часто тормозит авторизацию сеансов. Закроем все запущенные сеансы программы и выполним следующий скрипт:


If Exist "%USERPROFILE%\AppData\Roaming\1C\1Cv82" (
    Del /F /Q "%USERPROFILE%\AppData\Roaming\1C\1Cv82\*.*"
    Del /F /Q "%USERPROFILE%\AppData\Local\1C\1Cv82\*.*"
    for /d %%i in ("%USERPROFILE%\AppData\Roaming\1C\1Cv82\*") do rmdir /s /q "%%i"
    for /d %%i in ("%USERPROFILE%\AppData\Local\1C\1Cv82\*") do rmdir /s /q "%%i"
)
If Exist "%USERPROFILE%\Local Settings\Application Data\1C\1Cv82" (
    Del /F /Q "%USERPROFILE%\Local Settings\Application Data\1C\1Cv82\*.*"
    Del /F /Q "%USERPROFILE%\Application Data\1C\1Cv82\*.*"
    for /d %%i in ("%USERPROFILE%\Local Settings\Application Data\1C\1Cv82\*") do rmdir /s /q "%%i"
    for /d %%i in ("%USERPROFILE%\Application Data\1C\1Cv82\*") do rmdir /s /q "%%i"
)

Для платформ 8.1 и 8.3 пути в скрипте аналогичны, достаточно заменить имя каталога платформы на 1Cv81 или 1Cv8 соответственно.

Способ 4. Очистка журнала регистрации

Проанализируем влияние системного журнала. При файловой работе файл журнала регистрации (в платформе 8.1 это файл 1Cv8.elf внутри подкаталога 1Cv8Log) монопольно блокируется на запись при каждом новом входе пользователя в систему.

  1. Завершим работу всех пользователей в базе.
  2. Откроем каталог базы данных и найдем папку 1Cv8Log.
  3. Если ее размер составляет сотни мегабайт или гигабайты, переместим содержимое папки в архив вне каталога базы.
  4. При новом входе платформа автоматически создаст чистый файл журнала, что снимет задержки при параллельной регистрации входов.

Способ 5. Настройка сетевой карты и служб ОС

Разберем параметры сетевых адаптеров, влияющие на микропакеты при работе с файлом 1Cv8.1CD:

  1. В свойствах сетевого адаптера отключим аппаратные функции разгрузки: Large Send Offload (LSO) и Checksum Offload (разгрузка контрольной суммы TCP/IP). На многих контроллерах эти механизмы вызывают незаметные повторные отправки TCP-пакетов, приводящие к таймаутам 1С.
  2. Отключим службу Автономные файлы (Offline Files) на рабочих станциях пользователей, так как попытки Windows синхронизировать сетевой файл базы блокируют к нему разделяемый доступ.
  3. В настройках антивирусного ПО на всех компьютерах добавим расширение *.1CD и сетевой каталог базы в доверенную зону и исключения проверки в реальном времени.

Кардинальное решение: терминальный доступ или клиент-сервер

Важно помнить: архитектура файлового режима 1С через сетевые папки (Shared Folders) изначально не предназначена для высокоскоростной одновременной работы большого количества пользователей. Если база построена на обычных формах (как конфигурация «Управление торговлей 10.3»), публикация через веб-сервер недоступна.

Для полного избавления от проблемы сетевых задержек перейдем на один из двух вариантов:

  1. Терминальный сервер (RDP): база и клиенты работают локально на одной машине. Сеть используется только для передачи изображения рабочего стола. Для десктопных версий Windows можно применить специализированные решения терминального доступа (например, Thinstuff XP/VS или ViTerminal).
  2. Клиент-серверный режим (SQL): перевод базы на связку «Сервер 1С:Предприятия» + СУБД (MS SQL, PostgreSQL). Вся работа с файлами таблиц при этом выполняется сервером локально, а клиенты получают данные через оптимизированный протокол TCP/IP.
← На главную