IBM Support

Maximo 7.6 load-balancing crontask instances

Technical Blog Post


Abstract

Maximo 7.6 load-balancing cron-task instances

Body

In Maximo 7.6, there is a new functionality that benefits a highly available environment. Crontask instances can be loaded balanced across all servers that are allowed to run them.


Example of four clusters (one each for Integrations, User Interface, CRON, and Reports). Each cluster has two servers.


In previous releases, the purpose of assigning multiple servers to the crontask cluster was to provide high availability if one of the servers goes down or becomes unavailable for any reason. When this behavior occurred, the crontask would move from the unavailable server to a running instance where the Maximo system properties allowed them to run. This means that all crontask instances were typically running in one of two CRON application server instances at any given time but never at the same time. The problem is that only one application server instance was running on all crontask instances and overloading that single server. It was possible to separate the load based on the crontask instance name (that uses static "mxe.crontask.donotrun" and "mxe.crontask.dorun" Maximo system properties for each application server instance) but it was not possible to run the same crontask instance in multiple servers at the same time so this load was always pinned to one application server instance.

With the release of Maximo 7.6, crontask instances run in all server instances that allow the CRONS to run, providing load distribution for the Crontask. For example, with an escalation task set to run on both of the two cluster application servers, such as using a property similar to the following in the maximo.properties file:
"mxe.crontask.dorun=ESCALATION.ESC1"
In Maximo 7.6, both application server instances take turns running this at the specified interval. If the crontask instance is scheduled to run every two minutes in the cluster, the task runs on the first application server instance at the scheduled time, and then two minutes later, the second application server instance runs the same crontask. Two minutes later again, the first application server instance runs this task again. There are four crontask application server instances and all four instances takes turns running this crontask instance.
This is an ideal situation. Sometimes the crontask runs on first Application, some other time on second Application. It distributes the load however not always half on one and half on the other. While a crontask instance is running, no other Maximo Application runs that crontask instance.
The new functionality allows to better control the load that is going to be placed on the servers and size the clusters accordingly. There are multiple reasons to have multiple application servers in the CRON cluster to prevent overloading any one application server instance running crontasks. Although there is control on which crontasks ran in which servers previously, it was not possible to distribute the crontask load for a single crontask instance.
The user can review which tasks are running in which application server with the help of  either the TASKSCHEDULER table in the database or by using the Crontask History tab to record this information and determine when and where the tasks are running.

[{"Type":"MASTER","Line of Business":{"code":"LOB59","label":"Sustainability Software"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSLKT6","label":"IBM Maximo Asset Management"},"ARM Category":[{"code":"a8m50000000CbCgAAK","label":"System"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

UID

ibm11113993