There is no hard limit on timer events, though you may run into some practical limits based on system resources and your database. When a timer is set it places your process in a wait state (committing it to the database) and puts a job into a database table. When the time comes for it to be executed, an executor on one of the flowable instances connected to the same database will pick it up.
Some limitations you may hit:
- If a significant number of timers from different tasks need to execute at exactly the same time, some may be delayed as it processes through the list of jobs. If you run into this issue you can add more flowable instances and it will scale horizontally
- If you have a lot of timer events in the same process instance trying to fire at the same you may end up with record locking issues. This can usually be rectified with some changes to your process design.
Flowable is very performant in the BPM space, handling thousands of process instances per second (depending on configuration). Here are some benchmarks, they’re a little older but still pretty valid: