IBM Support What's New?

Using Multiple JVMs to Support Users and Functionality

Technote (FAQ)


IBM often recommends limiting the number of users in Maximo to 50 and separating functionality such as MEA and Cron tasks. Why is this recommended and what is the meaning of this recommendation?


Limited documentation


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 Knowledge Centers for detailed instructions on clustering Maximo 7.5. Also review related links below for additional information on these topics.

Related information

Maximo Performance Best Practices 7.5
Best Practices for System Performanc​e 7.6
Using the DoNotRun property
Naming JVMs for better control

Cross reference information
Segment Product Component Platform Version Edition
Systems and Asset Management Tivoli Asset Management for IT All
Systems and Asset Management Maximo Asset Management Essentials All
Systems and Asset Management Tivoli Change and Configuration Management Database
Systems and Asset Management Tivoli Service Request Manager
Systems and Asset Management Control Desk

Document information

More support for: Maximo Asset Management
System Related

Software version: Version Independent

Operating system(s): Platform Independent

Reference #: 1329219

Modified date: 2010-07-17