Beginning from 4.0.x the pickup service is executed on single server in a cluster with failover functionality. This is an automatic service that assigns a random server in the cluster to execute the pickup service. The server on which the pickup service is being executed is responsible for picking up all the batches for the cluster while keeping check on the total execution capacity of the cluster.
Thus server.instance.pick.capacity should be set to total max pickup value that one wants to pick up on the cluster, thus if we have a 3-node cluster and we want it to pickup 15 batches we would set server.instance.pick.capacity to be 15.
Whereas server.instance.max.process.capacity is independent and must be set to the value which user wants to execute on the corresponding server. On our example the user would like to execute 5 batches on each server thus execution capacity must be set to 5 on each server.
NOTE: It is recommended that all servers in the cluster be configured using the same max process capacity and pick capacity values. This is because any server in the cluster can be assigned to run the pickup service in case of a failover.
|Server||server.instance.max.process.capacity||server.instance.pick.capacity||Set To Pickup|
It is required that all cron settings for the pickup service be offset per server.
Example of cron setttings:
dcma.pickUp.cronjob.expression=30 0/1 * ? * *
dcma.resume.cronjob.expression=30 0/1 * ? * *
dcma.pickUp.cronjob.expression=45 0/1 * ? * *
dcma.resume.cronjob.expression=45 0/1 * ? * *
It is recommended that there be a minimum of 15 seconds difference per server.
Note: From release 4120 onwards batch pickup algorithm has been optimized which will help to pick larger number of batches for processing irrespective of the batch class size, earlier batch pick up time was directly proportional to size of batch class.