Flowable engine performance drops dramatically under HTTP requests load


We are examining Flowable engine (running inside Docker in Flowable REST app) performance under heavy load of HTTP requests and without it. These requests each create new process instance in Flowable engine. It seems that performance differs dramatically in these cases. We use simple process definition with single async serviceTask which just writes a message to the log.

When the requests are sent (758 per second), Flowable can complete only 72 (191 with RabbitMQ for async jobs) process instances per second. When the requests load is finished, the performance raises up to 457 (1110 with RabbitMQ) and Flowable finishes all unfinished (and scheduled) jobs very fast.

We see that Tomcat and Async Executor use different thread pools, so they should not compete for the threads. We also understand that the server resources are limited and Tomcat requests processing use them. But is such a big difference normal? Should we tune some Java settings? Should we limit the number of Tomcat threads?

Any help would be appreciated.

Thank you.

Hey @VladimirKhil,

I think that this topic is the same as Bad performance with async service tasks and @joram already provided you input on it in his reply.


1 Like

Thank you for the answer. But I do not understand why Async Executor threads start to perform better without Tomcat load if they are totally separated from Tomcat threads. The only reason is the limit of CPU resources, as far as I understand.

If they’re executed on the same CPU, they will compete even if they’re in different threadpools.

1 Like