IBM Support

Using Multiple JVMs to Support Users and Functionality

Question & Answer


Question

IBM recommends limiting the number of users in Maximo to 50 and separating functionality such as MEA and Cron tasks.

Cause

Limited documentation

Answer

Maximo is a web based application written in the Java language. Java applications rely on many types of technology to execute including:
  • Networks
  • Hardware and operating systems
  • J2EE Servers (IBM WebSphere and Oracle WebLogic)
  • Java Virtual Machines (JVM) (IBM, Oracle)

When Maximo starts, it is running inside a JVM. The JVM is managed by a J2EE server. The J2EE server is running on an operating system on a hardware server. And, the hardware is connected to the network.

Each of these technologies provides or consumes resources and resources are limited by the technology. Both Maximo and JVMs are resource consumers. When a JVM starts, it uses parameters to determine the resources it will have available to it during runtime (see the software installation guides for recommended parameters).

A typical 64-bit Maximo environment may be allocated 6144 MB (6 GB) of memory and 50 execution threads. Those parameters become the core of the resources available to the JVM and to Maximo.

Maximo code is a collection of files including Java classes, XML, JSP, and others. These files are compressed into an Enterprise ARchive (EAR) file. Each JVM maintains a copy of the EAR file and executes the code independently. This means that each instance of a JVM maintains its own database connections, its own session information, and its own resource usage. If all of the EAR files deployed are exactly the same then they will all provide the exact same functionality. This is typically the case in a User Interface (UI) cluster.

Maximo is an all inclusive product. The server can provide many types of services including UI functions, integration functions (MEA or MIF), scheduled task functions (Cron tasks) and others. To make Maximo more flexible, each of these functions can be configured and turned on and off.

In a small environment where there are only five users that access Maximo, it may make sense to run the entire application on a single piece of hardware with the database, reporting, JEE server and all of the Maximo functions executing.

In a larger environment with 500 concurrent users, the only way to successfully support the user base and all of the Maximo functionality while maintaining an acceptable level of performance is to separate tasks and allocate adequate resources. In this example, IBM might recommend separate hardware for the database, reporting and J2EE functions. In addition, a minimum of ten (10) JVMs should be set up in a cluster to provide UI services, at least one (1) JVM dedicated to incoming MEA transactions (when it is being used) and one (1) JVM dedicated to executing cron tasks should be set up. The JVMs alone will require a minimum of 72 GB of memory and up to 12 processors. (6 GB and 1 processor per JVM recommended).

It is common for IBM support and development to recommend limiting the number of users to 50 per JVM.

The number 50 is used in describing the number of concurrent connections that can be made from a single JVM. Since there are a limited number of resources, such as threads and memory allocated to a single JVM, this is a general number that IBM uses and which will usually meet a typical customer’s requirements. Sometimes 100 people might log in and performance will be fine if no one is working. At other times, 25 users might login to the same application in a call center and may hit it so hard that it reaches its maximum. Based on this, fifty (50) is a guideline for concurrent connections.

In addition to the UI cluster, it is important to separate specific tasks out of the cluster. Cron tasks can use many resources and impact the performance of the JVM. By separating the cron task execution in its own JVM, cron tasks can run to completion without impacting users. The Maximo MIF can put a heavy load on a JVM especially if there is a high volume of incoming MIF transactions. The MIF should execute in a stand alone JVM outside the cluster to process. By separating these processes, you can minimize the impact on users if a heavy load gets placed on one of the other systems. In addition, these servers can even be restarted without impacting users.

See the Maximo Asset Management documentation for instructions for an Application server clusters overview. Also review related links below for additional information on these topics.

[{"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":"a8m50000000CbPQAA0","label":"Performance"}],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.6.0;7.6.1","Type":"MASTER"},{"Line of Business":{"code":"LOB59","label":"Sustainability Software"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSWT9A","label":"IBM Control Desk"},"ARM Category":[{"code":"a8m500000008b3TAAQ","label":"Miscellaneous Category (Portal, UI, Maximo, Install)"}],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.6.0;7.6.1","Type":"MASTER"}]

Document Information

Modified date:
11 December 2023

UID

swg21329219