Вопрос

Задержка выполнения БП

При большой нагрузке и большом количестве вызываемых БП (свыше 25000 экземпляров в сутки) начинается их отложенное выполнение. Все БП работают не по расписанию. Очередь Quartz пустая. В журнале процессов сразу появляется запись, когда БП инициируется. Но первый шаг БП выполняется с задержкой в 1+ часов. Пиковая загрузка ЦП приложения не превышает 60%. Загрузка ОЗУ 25%. Не знаете в какой ресурс упирается приложение?

Нравится

2 комментария

Добрый день!



Как вы определяете, что очередь Quartz  пуста. Правильно ли я понимаю что записей в таблице QRTZ_FIRED_TRIGGERS нет?

Рекомендую просмотреть также порядок запусков задач планировщика это позволить прояснить алгоритм выполнения задач:

 

declare @timezoneOffsetHours float = 3.0; --set time zone offset here

declare @timezoneOffsetTicks float = 10000000.0 * 60.0 * 60.0 *

@timezoneOffsetHours;

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SELECT

t.[SCHED_NAME],

t.[JOB_NAME],

t.[JOB_GROUP],

t.[TRIGGER_NAME],

t.[TRIGGER_GROUP],

CAST(([NEXT_FIRE_TIME] + @timezoneOffsetTicks)/864000000000.0 - 693595.0 AS

DATETIME) as [NEXT_FIRE_TIME],

CAST(([PREV_FIRE_TIME] + @timezoneOffsetTicks)/864000000000.0 - 693595.0 AS

DATETIME) as [PREV_FIRE_TIME],

([NEXT_FIRE_TIME] - [PREV_FIRE_TIME]) / 600000000.0 [Last repeat interval, min],

t.[TRIGGER_STATE],

t.[TRIGGER_TYPE],

CAST(([START_TIME] + @timezoneOffsetTicks)/864000000000.0 - 693595.0 AS DATETIME)

as [START_TIME],

t.[MISFIRE_INSTR],

st.[REPEAT_COUNT],

st.[REPEAT_INTERVAL] / 1000 / 60 as [REPEAT_INTERVAL, min],

spt.[INT_PROP_1] as [REPEAT_INTERVAL, min],

ct.[CRON_EXPRESSION]

FROM [QRTZ_TRIGGERS] t

left join [QRTZ_SIMPLE_TRIGGERS] st on t.[SCHED_NAME] = st.[SCHED_NAME] and t.

[TRIGGER_NAME] = st.[TRIGGER_NAME] and t.[TRIGGER_GROUP] = st.[TRIGGER_GROUP]

left join [QRTZ_CRON_TRIGGERS] ct on t.[SCHED_NAME] = ct.[SCHED_NAME] and t.

[TRIGGER_NAME] = ct.[TRIGGER_NAME] and t.[TRIGGER_GROUP] = ct.[TRIGGER_GROUP]

left join [QRTZ_SIMPROP_TRIGGERS] spt on t.[SCHED_NAME] = spt.[SCHED_NAME] and t.

[TRIGGER_NAME] = spt.[TRIGGER_NAME] and t.[TRIGGER_GROUP] = spt.[TRIGGER_GROUP]

ORDER BY t.[NEXT_FIRE_TIME] ASC, t.[PRIORITY] DESC





 

Да, в таблицах QRTZ_... 35 записей. Там только БП, которые по расписанию работают и системные процессы, вроде синхронизации с LDAP, EL и т.д. Все остальные БП, которые отрабатывают с задержкой - это БП, в основном, вызываемые с помощью ProcessModuleUtilities из клиентского кода. Запись в Журнале процессов появляется сразу после вызова БП, но сами элементы начинают выполняться спустя некоторое время. От нескольких минут до нескольких часов, в зависимости от того, насколько загружена система.

Показать все комментарии