Разберем классическую для файловых баз 1С ситуацию: информационная база расположена в общей сетевой папке на одном из компьютеров. Первый пользователь входит в программу мгновенно за считанные секунды. Однако как только к базе пытается подключиться второй или третий сотрудник, время старта программы многократно увеличивается и доходит до 5–10 минут. При этом сетевая загрузка не превышает 5%, тесты скорости передачи файлов показывают отличные результаты, а размер базы может быть небольшим (от 300 МБ до пары гигабайт).
Проанализируем технические причины такого поведения файловой СУБД 1Cv8.1CD и рассмотрим пошаговые методы устранения проблемы.
Выясним причину, почему первый сеанс стартует быстро, а последующие зависают. В операционных системах семейства Windows при сетевом доступе к файлам по протоколу SMB задействуется механизм оппортунистических блокировок (Opportunistic Locks / Oplocks).
Когда первый пользователь открывает базу данных по сети, операционная система хоста предоставляет ему монопольную блокировку. Это позволяет клиенту активно кэшировать данные локально в оперативной памяти и считывать информацию крупными блоками. Но как только к файлу 1Cv8.1CD обращается второй пользователь, операционная система принудительно отзывает монопольную блокировку (происходит процедура oplock break). Локальное кэширование отключается, и файловая система переходит в режим блокировки диапазонов байт (byte-range locks).
Файловая система 1С начинает запрашивать данные мелкими порциями по 4 КБ. Вместо непрерывной передачи данных сеть начинает непрерывно ожидать подтверждений доставки пакетов (latency/RTT). По этой причине сетевая карта простаивает на уровне 2–5%, а запуск превращается в мучительное ожидание. Ситуация усугубляется внутренней фрагментацией страниц базы, разрастанием журнала регистрации и устаревшим протоколом SMB 1.0 на старых операционных системах.
Рассмотрим метод, который помог автору темы на практике. Если в структуре метаданных накопились внутренние несоответствия или база давно не переиндексировалась, помогает процедура выгрузки и повторного наката конфигурации или данных.
Конфигуратор.Для полной очистки структуры файла от внутренних пустых страниц эффективнее использовать пересборку через архивную копию базы данных:
.dt).1Cv8.1CD с оптимизированными индексами и отсутствием фрагментированных таблиц.Разберем системную настройку сетевого стека Windows. Отключение Oplocks стабилизирует работу сетевой файловой базы, избавляя от длительных пауз при сбросе монопольного кэша.
regedit.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters.EnableOpLocks и присвоим ему значение 0.Size (тип DWORD) со значением 3, что настроит буферы операционной системы для работы в режиме файлового сервера.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters создадим параметр EnableOplocks со значением 0 (для устаревших ОС также задается UseOpportunisticLocking со значением 0).Посмотрим на пример пакетного файла для гарантированного удаления временных файлов и пользовательского кэша платформы, повреждение которых часто тормозит авторизацию сеансов. Закроем все запущенные сеансы программы и выполним следующий скрипт:
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 соответственно.
Проанализируем влияние системного журнала. При файловой работе файл журнала регистрации (в платформе 8.1 это файл 1Cv8.elf внутри подкаталога 1Cv8Log) монопольно блокируется на запись при каждом новом входе пользователя в систему.
1Cv8Log.Разберем параметры сетевых адаптеров, влияющие на микропакеты при работе с файлом 1Cv8.1CD:
*.1CD и сетевой каталог базы в доверенную зону и исключения проверки в реальном времени.Важно помнить: архитектура файлового режима 1С через сетевые папки (Shared Folders) изначально не предназначена для высокоскоростной одновременной работы большого количества пользователей. Если база построена на обычных формах (как конфигурация «Управление торговлей 10.3»), публикация через веб-сервер недоступна.
Для полного избавления от проблемы сетевых задержек перейдем на один из двух вариантов: