Java Heap settings best practice

Issue

  • Best Practice For Java Heap settings

Environment

Resolution

General

A. According to Oracle JVM ergonomic page, the maximum heap size should be be 1/4 of the physical memory. This threshold is also extended when Jenkins is running inside a VM and/or Docker Container (maximum heap size limits are aggregated when there are more than one Java application running on the same host).

B. Set your minimum heap size (-Xms) to the same value as maximum size (-Xmx). As a JVM Administrator, you should know the needs of the application based on current usage if you are following Best Practices and collecting Garbage Collection logs. If you need assistance with analyzing your GC logs, please submit a support ticket.

C. Jenkins should not be started with less than -Xmx2g. However, no more than -Xmx16g should be allocated to heap per our Best Practices and horizontal scaling should be employed.

IMPORTANT

If your instance is not able to support its current workload (due to number of jobs and dynamic configurations) you should consider scaling horizontally your infrastructure by adding more masters to divide the workload more efficiently.

Estimation

D. The Jenkins Monitoring Plugin can be installed to monitor the performance of your instance, the right heap value should be a value between 80-90% of total heap consumption when the instance is at the maximum workload. Increased heap memory will produce long Garbage Collection pauses, which can be observed via slowness in the UI and sometimes even side effects like agent disconnections.

Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.