Java Application Server - EcoSys - Help - Hexagon

EcoSys Performance Tuning

Language
English
Product
EcoSys
Search by Category
Help
EcoSys Version
9.2

Database Driver Version

Verify that the application server is configured to use the current version of the JDBC driver appropriate for your database.

  • The database driver is usually located in the common/lib folder of your Java application server.

  • You can verify the exact driver the application server is using from within the software. Go to the System Information page, and select the Database tab. For Oracle, you should have a driver that matches your database version. For SQL Server, we recommend using driver version 4.0 or newer.

Make sure that your driver matches the JDK being used by the application server:

  • For Oracle with Java 8 (JDK 1.8.*), look for ojdbc8.jar.

  • For MS SQL Server with Java 8 (JDK 1.8.*), look for sqljdbc42.jar.

Java Heap Size

The Java heap size (the amount of memory allocated to the Java application) is a critical factor in application performance. The amount of memory required for the EcoSys application depends on two key parameters: the size of the data being processed, and the number of concurrent users. Increasing Java heap size often has a positive effect on overall performance.

How to check the Java heap size:

  • While the EcoSys application is running, the Java heap memory usage is visible in several places: the System Info page (General or Memory tab), the Server Metrics screen (shows a graph over time), and the System Status monitor page.

  • To get an accurate reading of the actual memory in use, we recommend that you trigger a garbage collection before noting the measurement. You can do this on the System Info > Memory screen.

  • Note that the size of the "java" process as viewed from the application server does not always indicate the Java heap size. This is because Java may not be using all of its memory at any given time.

Nominal values are listed below:

  • If the Java heap usage is consistently above 70%, you will likely benefit from increasing the heap size. If the heap usage is consistently above 85%, performance will most likely suffer noticeably. See table below for starting minimum Java heap size recommendations. The optimal value depends on the specific usage patterns and data volumes, so additional measurements are recommended.

  • Occasional spikes above 70% are not a problem, as long as they are short-lived. If the heap usage exceeds 90-95%, performance will likely degrade substantially.

  • Each application server has its own way to assign the Java heap size, refer to the installation guide for details. We recommend setting the minimum heap size and the maximum heap size to the same value, so that Java allocates all assigned memory on startup and does not need to dynamically grow in size as the application runs.

  • 32-bit operating system or 32-bit Java versions cannot use more than 1.4 GB of heap space, even if the physical memory is available. If you need to extend your Java heap size beyond 1.4 GB, you will need to be running a 64-bit version of Java. For more information, see the section server.has32BitLimitOnHeapSize.

The following table is a rough guide for sizing the JVM (Java heap size). Actual sizing should be done based on measured tests of data volume and concurrent user load

Recommended Minimum

Java Heap Size*

Low User Load

(1-25 concurrent users)

Medium User Load

(25-75 concurrent users)

High User Load

(75-200 concurrent users)

Enterprise

(> 200 concurrent users)

Low Data Volume

< 50,000 cost objects

< 5 MM transactions

1.0 GB

6.0 GB

8.0 GB**

> 12.0 GB**

Medium Data Volume

< 300,000 cost objects

< 25 MM transaction

1.4 GB

6.0 GB

10.0 GB**

> 14.0 GB**

High Data Volume

< 1.5 MM cost objects

< 100 MM transactions

3.0 GB

8.0 GB

12.0 GB**

> 16.0 GB**

Enterprise

> 1.5 MM cost objects

> 100 MM transactions

> 5.0 GB

> 8.0 GB

> 12.0 GB**

***

* Any JVM heap size over 1.4 GB requires a 64-bit platform.

** Multiple application servers recommended.

*** Tailored measurements and sizing recommended.

Java Memory Thresholds

EcoSys has built-in memory threshold monitoring that is designed to prevent an out-of-memory condition from disrupting users on the system. The threshold system cancels a given report or spreadsheet request if it uses too many resources and jeopardize the stability of the system.

These thresholds should be set such that they do not prevent normal usage of the system, but will catch a runaway report or spreadsheet before the system exhausts the Java heap memory.