A scheduler daemon is a background thread that searches for events in the persistent store.
A scheduler daemon is started for each scheduler defined on each server. If "Scheduler 1" is configured on server1, then there will only be one scheduler daemon running on server1 unless it is cloned. If "Scheduler 1" is defined at the node scope level, then the scheduler will run on each server within that node.
The poll interval determines the frequency at which the persistent store is queried. By default, this value is set to 30 seconds. When a task is found that is scheduled to fire within the current poll interval, an alarm is set. The task then runs as close to this time as possible using an alarm thread from the scheduler's associated work manager. Thus, the number of alarm threads configured on the work manager determines how many concurrent tasks are executed. No tasks are lost. If we reach this limit, then new tasks are simply queued to be executed when an alarm thread becomes available. The actual firing time is dictated by server load and availability of free threads in the alarm thread pool of the associated work manager.
Scheduler daemons in a cluster
When multiple scheduler daemons are configured to the same table (as is the case in a clustered environment), any of the daemons can find a task and set the timer in its Java virtual machine (JVM). The task is executed in the virtual machine where the timer first fires.