Hello Flowable colleagues,
After adopting the newest flowable (6.8.0) I have noticed a performance degradation of about 50% of our service with global lock disabled (default). After some investigation into which default parameters were changed, I saw:
maxTimerJobsPerAcquisition was increased from 1 to 512
maxAsyncJobsDuePerAcquisition was increased from 1 to 512
After setting them to 1 as in flowable 6.6.0, the performance is again normal (not slower).
After enabling the global lock the performance is even worse. Tried modifying maxTimerJobsPerAcquisition and maxAsyncJobsDuePerAcquisition to 1 and the results were better but still slower.
Also tried to increase maxTimerJobsPerAcquisition, maxAsyncJobsDuePerAcquisition to 1024 and the queue size to 8192 (from 4) but the performance is still not that good.
Are there any known cases where the global lock might be actually slower? Any recommendation if these parameters are good for such a use case?
Our system parameters are:
- 5 flowable engines (5 cloud foundry instances)
- 4GB ram and 4GB disk
- PostgreSQL DB with 16GB of RAM and 1000GB storage with 4 CPUs
Flowable Configuration
- DefaultAsyncTaskExecutor
- QueueSize - 4
- CorePoolSize - 32
- MaxCorePoolSize - 64
- SecondsToWaitOnShutdown - 480
- AsyncExecutor
- AsyncJobLockTimeInMillis - 30 minutus
- DefaultAsyncJobAcquireWaitTimeInMillis - 3 seconds
Our flowable processes contain a large number of Service tasks and parallel sub-processes.
Example diagram: https://github.com/cloudfoundry/multiapps-controller/blob/master/multiapps-controller-process/src/main/resources/org/cloudfoundry/multiapps/controller/process/deploy-app.bpmn
Full flowable configuration: https://github.com/cloudfoundry/multiapps-controller/blob/master/multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/FlowableConfiguration.java#L77
Best regards,
Ivan