Как определить виновников блокировок и зависаний в файловой базе 1С?

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

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

Причины возникновения блокировок в файловом режиме

Файловый режим работы 1С имеет фундаментальные архитектурные ограничения, о которых важно помнить:

  1. Табличный уровень блокировок. В отличие от клиент-серверного режима (SQL), где работают точечные построчные управляемые блокировки, в файловой базе при записи блокируются целиком таблицы или смежные области файла базы данных. Любая длительная транзакция (проведение объемного документа, групповое перепроведение, закрытие месяца) выстраивает остальные сеансы в очередь ожидания.
  2. Количество пользователей. Файловая база оптимально рассчитана на работу 3–5 активных пользователей. При увеличении числа работающих до 8–10 человек вероятность конфликтов параллельных транзакций на запись возрастает многократно.
  3. Фоновые и регламентные задания. Автоматический пересчет итогов, слияние индексов полнотекстового поиска или загрузка классификаторов в файловом режиме выполняются внутри одного из клиентских сеансов, блокируя доступ к общим данным.
  4. Дисковая подсистема и антивирусное ПО. Сканирование файла 1Cv8.1CD антивирусом в режиме реального времени при каждой транзакции многократно увеличивает время удержания файловых дескрипторов.

Диагностика с помощью Технологического журнала (ТЖ)

Выясним, как настроить встроенный механизм сбора событий платформы — Технологический журнал. Поскольку все пользователи работают на одном терминальном сервере, журнал настраивается один раз для всей платформы.

Разберем по шагам порядок настройки:

  1. Перейдем в каталог конфигурационных файлов платформы 1С. По умолчанию для 64-разрядной версии Windows это: C:\Program Files\1cv8\conf (или C:\Program Files (x86)\1cv8\conf для 32-разрядной версии).
  2. Создадим в этом каталоге файл с именем logcfg.xml в кодировке UTF-8.
  3. Настроим сбор событий ожидания и взаимных блокировок. Посмотрим на пример содержимого конфигурационного файла:

<config xmlns="http://v8.1c.ru/v8/tech-log">
    <log location="C:\1C_Logs\Locks" history="24">
        <event>
            <eq property="name" value="TLOCK"/>
        </event>
        <event>
            <eq property="name" value="TTIMEOUT"/>
        </event>
        <event>
            <eq property="name" value="TDEADLOCK"/>
        </event>
        <event>
            <eq property="name" value="EXCP"/>
        </event>
        <property name="all"/>
    </log>
</config>

Проанализируем ключевые события, которые собираются этим журналом:

  1. TLOCK — фиксирует факт установки блокировки на ресурс, длительность ожидания и системный идентификатор процесса (p:processName, t:clientID).
  2. TTIMEOUT — показывает ситуации, когда сеанс пользователя превысил максимальное время ожидания освобождения заблокированного ресурса и завершился ошибкой.
  3. TDEADLOCK — регистрирует возникновение тупиковых взаимоблокировок, когда два или более процессов заблокировали ресурсы и ожидают освобождения данных друг от друга.
  4. EXCP — записывает системные исключения и критические ошибки базы данных.

Важно: Убедимся, что у учетных записей пользователей терминального сервера есть полные права на запись в каталог логов (в нашем примере: C:\1C_Logs\Locks).

Анализ процессов через системный мониторинг

Параллельно со сбором логов платформы рассмотрим системные способы отслеживания «зависших» сеансов на терминальном сервере:

  1. Монитор ресурсов и Process Explorer. Откроем утилиту Process Explorer от Sysinternals. Найдем все запущенные процессы 1cv8.exe, отсортируем их по нагрузке на процессор (CPU) и активности диска (Disk Read/Write). Идентификатор процесса (PID), создающий максимальную очередь дисковых операций или нагружающий ядро процессора на 100%, указывает на сеанс виновника блокировки.
  2. Поиск открытых дескрипторов. В утилите Process Explorer воспользуемся сочетанием клавиш Ctrl + F и введем имя файла базы 1Cv8.1CD. Это позволит увидеть, какие именно процессы удерживают активные блокировки на уровне операционной системы.
  3. Журнал регистрации 1С. Сопоставим время возникновения пиковой нагрузки с событиями в журнале регистрации платформы. Обратим внимание на длительные транзакции, выполнение регламентных заданий или массовое проведение документов конкретным пользователем.

Методы устранения проблем и оптимизация работы

После выявления источников конфликтов реализуем комплекс мер по оптимизации:

  1. Перевод базы на клиент-серверный вариант (SQL). Это наиболее надежное и фундаментальное решение для коллектива от 8–10 пользователей. Сервер «1С:Предприятие» в связке с MS SQL Server или PostgreSQL обеспечивает работу управляемых блокировок на уровне отдельных записей, изолирует транзакции и исключает блокировку всей таблицы.
  2. Публикация базы на веб-сервере. Если переход на SQL пока невозможен, настроим публикацию файловой базы на веб-сервере (IIS или Apache) и переведем пользователей на работу через тонкий клиент или браузер. В этом случае обращения к файлу базы централизуются пулом процессов веб-сервера, что снижает хаотичную файловую конкуренцию терминальных сеансов.
  3. Настройка регламентных процедур. Отключим неиспользуемые регламентные задания в информационной базе. Длительные фоновые процедуры (обновление индекса полнотекстового поиска, загрузка курсов валют, закрытие месяца) перенесем на нерабочие часы.
  4. Настройка дисковой подсистемы и исключений антивируса. Перенесем файл информационной базы на высокоскоростной накопитель (NVMe/SSD). Добавим расширения файлов *.1CD, *.1CL, *.cfl, а также временные каталоги пользователей в список исключений антивирусного сканера.
  5. Профилактическое обслуживание. Регулярно выполним тестирование и исправление информационной базы в конфигураторе (пункт меню «Администрирование» — «Тестирование и исправление») с обязательными опциями переиндексации и сжатия таблиц, а также проверим целостность файла утилитой chdbfl.exe.
← На главную