Каталог решений - Ошибка производительности при проведении этапа 2.2 в ERP 2.4 и ERP 2.5

Ошибка производительности при проведении этапа 2.2 в ERP 2.4 и ERP 2.5

Ошибка производительности при проведении этапа 2.2 в ERP 2.4 и ERP 2.5

В наличии

Хочется поделиться одним подводным камнем, с которым могут встретиться другие пользователи ERP. Искал решение в интернете, но ничего похожего не нашел. Поэтому решил создать эту тему.

Категория:

Описание

Некоторое время назад пользователи стали встречаться с ошибками ожидания блокировки при проведении этапов производства. С помощью технологического журнала выяснили, что виновником блокировки является проведение этапа в фоновом задании "Обработка очереди <Задания к обработке этапов производства>". Поскольку проведение объемных этапов делалось в фоне (инициировано проведением документа "Производственная операция"), проблему с производительностью заметили не сразу. На первом скриншоте видно, что время выполнения задания (по сути все время занимает проведение этапа) неприемлемо долгое.

Анализ показал, что время проведения зависит от количества строк в табличных частях документа. Причем увеличивается крайне нелинейно. Виновником является запрос в процедуре "ПроверитьРеквизитыШапки" модуля менеджера Этапа производства2_2. На втором скриншоте показаны 4 замера. При количестве строк в ТЧ "Расход" в 4-5 тысяч строк практически все время занимает выполнение запроса (4-5 часов).

Главным виновником найден пакет запроса "ВТКоличествоСтрокВТЧ" (результаты на третьем скриншоте). Этот пакет формируется отдельной функцией "ТекстЗапросаКоличествоСтрокВТЧДляПроверкиЗаполнения". Она переписана и вынесена в расширение.

В результате проведение этапа в 6000 строк в ТЧ "Расход" выполнялось около 40 секунд (бОльшую часть занимают другие объемные процедуры).

В тексте представлен альтернативный вариант процедуры "ТекстЗапросаКоличествоСтрокВТЧДляПроверкиЗаполнения". Соединения таблиц заменил на объединение.

   

has been added to your cart:
Оформление заказа