I am doing a performance benchmark of JBPM running async processes in a multithreaded environment. I have muthple threads executing the same process 10000 times.
1) In the asycn process I am using recieve task with a workItemHandler. WorkItemHandler triggers the completion of the task in an aync manner.
2) In order to execute in the multithreaded environment I am using PerRequestRuntimeManager so that each thread is able to execute independently.
On running the performance tests I found around the above areas to be leading to reduced perforamnce
1) Creation of the runtime (including taskService, KieSession) takes around 40% of the total time as it is done for each request.
2) For each async task (same behaviour in human task) JBPM seems to create an entry into the Task table and then remove it (Apart from the processInstance). This as well causes a big overhead.
The question(s) I have are
1) Is it possible to somehow reduce the overhead of the runtime creation. I know that singletonRuntimeManager would not work in case of mutithreaded Environment
2) Is it possible to optimize the task table overhead?
Retrieving data ...