Tuning the Flowable async executor
Sizing Flowable's async executor for your job volume: thread pool and queue settings, acquisition behavior, timer and async job tables, what happens when the queue fills, and the database load each setting creates.

Keeping Flowable fast under load: async executor tuning, ID generation, history volume, concurrency control, external workers and caches.
Sizing Flowable's async executor for your job volume: thread pool and queue settings, acquisition behavior, timer and async job tables, what happens when the queue fills, and the database load each setting creates.
When to switch Flowable from the default database ID block generator to the StrongUuidGenerator: the high-concurrency failure mode, idBlockSize tuning, the extra dependency, and testing both under load.
Choosing none, activity, audit or full history in Flowable by weighing audit needs against write volume and table growth, with history cleaning schedules to keep the database manageable.
Why Flowable runs jobs from one process instance sequentially by default, how exclusive jobs prevent optimistic locking failures at joins, and when non-exclusive jobs are worth the risk.
Diagnosing FlowableOptimisticLockingException under concurrent load: parallel branches meeting at joins, async continuations, API callers updating the same instance, and the modeling and retry fixes.
Moving heavy or slow work out of the engine into external workers: topics and job acquisition, independent scaling of worker pools, lock durations, and the effect on engine threads and database load.
Configuring Flowable's deployment cache for many process definitions or tenants: cache limits, memory use, behavior across cluster nodes, and when a custom cache helps.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.