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