Hi Daniel,
Use this query to check your process engine health, if you want to do a stress testing you need to run invoke multiple process and then check the number of threads its opening via event tabs and then gather thread dump to see if there is any thread which is hanging. Also you need to have adequate memory so keep a check at the JVM utilazation allocated to BG.
Also a best practice to segregate the job and process run separately as a BG and have no more than 2 BG for process engine.
select
count(run_proc.id) Processes_Started,
to_date(to_char(run_proc.start_date, 'YYYY-MM-DD HH24') || ':' || floor(TO_NUMBER(TO_CHAR(run_proc.start_date,'MI'))/30)*30, 'YYYY-MM-DD HH24:MI') start_datetime,
(to_char(run_proc.start_date, 'YYYY-MM-DD HH24') || ':' || floor(TO_NUMBER(TO_CHAR(run_proc.start_date,'MI'))/30)*30) start_datetime_char,
max(round((run_step.start_date - run_proc.start_date)*60*60*24,2)) max_Start_delay,
avg((run_step.start_date - run_proc.start_date)*60*60*24) Avg_start_delay
from
bpm_run_processes run_proc
inner join bpm_def_process_versions proc_ver on proc_ver.id = run_proc.process_version_id
INNER join cmn_captions_nls proc_nls on (proc_nls.table_name = 'BPM_DEF_PROCESSES' and proc_NLS.PK_ID = proc_ver.process_id)
inner join bpm_run_steps run_step on run_step.process_instance_id = run_proc.id
INNER join cmn_captions_nls step_nls on (step_nls.table_name = 'BPM_DEF_STEPS' and STEP_NLS.PK_ID = run_step.step_id)
where run_proc.created_date > sysdate -5
and step_nls.language_code = 'en' and step_nls.name = 'Start'
and proc_nls.language_code = 'en'
group by to_date(to_char(run_proc.start_date, 'YYYY-MM-DD HH24') || ':' || floor(TO_NUMBER(TO_CHAR(run_proc.start_date,'MI'))/30)*30, 'YYYY-MM-DD HH24:MI'), (to_char(run_proc.start_date, 'YYYY-MM-DD HH24') || ':' || floor(TO_NUMBER(TO_CHAR(run_proc.start_date,'MI'))/30)*30)
order by to_date(to_char(run_proc.start_date, 'YYYY-MM-DD HH24') || ':' || floor(TO_NUMBER(TO_CHAR(run_proc.start_date,'MI'))/30)*30, 'YYYY-MM-DD HH24:MI')
Regards
Suman Pramanik