Почему обмен данными в подчиненном узле 1С выполняется значительно медленнее, чем в центральном?

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

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

Анализ программной среды и исключение внешних факторов

Прежде чем приступать к оптимизации кода, проанализируем системное окружение. Для файловых баз .1CD критически важна скорость работы дисковой подсистемы и отсутствие внешних блокировок от операционной системы.

Проверим настройки антивируса. Это одна из самых частых причин замедления. Если в центральной базе папка с данными добавлена в исключения, а в подчиненной — нет, антивирус будет сканировать каждый блок файла базы данных при записи. Учитывая, что при загрузке 400 документов происходит огромное количество обращений к диску, это может замедлить процесс в десятки раз. Необходимо убедиться, что исключены:

  1. Каталог с самой информационной базой (файл 1Cv8.1CD).
  2. Каталог временных файлов пользователя (папка TEMP), так как именно там 1С распаковывает XML-сообщения обмена.
  3. Каталог обмена, через который передаются файлы Message_XXX_YYY.xml.

Проанализируем фрагментацию данных. В процессе активного обмена файл базы данных постоянно расширяется и перезаписывается. Разберем два вида фрагментации:

Диагностика с помощью замера производительности

Чтобы понять, на каком именно этапе происходит затык (выгрузка данных из узла или загрузка в него), нам необходимо выполнить замер кода. Это позволит выяснить, какая строчка конфигурации или какой объект метаданных вызывает наибольшее ожидание.

Запустим подчиненный узел в режиме "Конфигуратор" и включим отладку. В режиме "Предприятие" инициируем обмен и воспользуемся инструментом "Замер производительности". Проанализируем полученную таблицу. Особое внимание уделим следующим моментам:

  1. Обработчики событий при записи: Проверим, не срабатывают ли в расширениях или основной конфигурации тяжелые алгоритмы при записи документов в подчиненном узле.
  2. Механизмы RLS (Ограничение прав на уровне записей): Даже если у пользователя полные права, система может инициировать расчет параметров доступа, если включены функциональные опции по подразделениям или организациям.
  3. Полнотекстовый поиск: Если в базе включено индексирование, то при загрузке данных система тратит ресурсы на обновление индекса. Попробуем временно отключить полнотекстовый поиск в подчиненном узле через УправлениеПолнотекстовымПоиском.

Для выявления проблемных участков кода мы можем использовать программный доступ к замеру. Например, чтобы понять, сколько времени занимает загрузка конкретного объекта, можно вставить в модули обмена следующий код:


НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
// Код загрузки объекта или вызова типового механизма
Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
Если Длительность > 1000 Тогда // Если дольше 1 секунды
    ЗаписьЖурналаРегистрации("ОбменДанными.Производительность", УровеньЖурналаРегистрации.Предупреждение, , , "Долгая загрузка объекта: " + ОписаниеОбъекта);
КонецЕсли;

Проверка состояния журнала регистрации и временных файлов

Выясним, не является ли "узким горлышком" сам журнал регистрации. В файловых базах журнал (файл 1cv8.lgd или .lgp) растет синхронно с действиями пользователей. При загрузке 400 документов в журнал записываются тысячи событий. Если файл журнала весит несколько гигабайт, запись в него новых строк может существенно замедляться.

Рекомендуется выполнить сокращение журнала регистрации или на время обмена установить уровень детализации "Регистрировать только ошибки". Также проверим настройки кэширования Windows для диска, на котором лежит база. Если кэширование записи отключено, каждая операция будет дожидаться физического подтверждения от диска, что фатально для скорости файловой 1С.

Особенности фоновых заданий в файловом режиме

В подчиненном узле часто "залипают" фоновые задания. Рассмотрим ситуацию: когда вы запускаете обмен, в базе может параллельно стартовать задание по извлечению текста для поиска или мониторингу классификаторов. В файловом режиме 1С использует блокировку на уровне всей таблицы. Это значит, что пока одно задание читает таблицу, другое не может в нее записывать.

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

Радикальный метод: пересоздание подчиненного узла

Если тестирование и исправление (ТиИ), очистка кэша и настройка антивируса не принесли результатов, существует вероятность внутреннего логического сбоя в регистрации изменений или структуре конкретного узла. Разберем, как правильно пересоздать узел для исправления ситуации:

  1. В центральном узле создадим новый подчиненный узел в плане обмена Полный.
  2. Сформируем начальный образ базы.
  3. Запустим новую базу и проверим скорость обмена в ней.

Если в новом узле обмен проходит за 10-15 минут, значит, в старом подчиненном узле была повреждена таблица регистрации изменений или имелись скрытые проблемы с объектом ПланыОбменаМенеджер. Помните, что при создании образа в файловой версии 1С критически важно, чтобы в момент формирования образа никто не работал в центральной базе, так как блокировки могут привести к некорректному переносу состояния объектов.

Итоги и рекомендации

Мы выяснили, что разница в скорости чаще всего вызвана не "плохим кодом", а особенностями работы файловой СУБД 1С с системными ресурсами. Резюмируем наши действия:

Соблюдение этих правил позволит поддерживать скорость обмена данными в БП КОРП на высоком уровне даже при росте объема документов.

← На главную