r17 - 2016-12-19 - 14:58:53 - PaulEllisYou are here: TWiki >  Deployment Web > DeploymentAdminstering > ConfiguringAndTuningTheJVM

new.pngConfiguring and tuning the Java Virtual Machine (JVM)

Authors: DanToczala
Build basis: CLM 2011 product versions 3.x.

The initial configuration of JVM settings for the Jazz applications is relatively straightforward. Start all deployments with the default settings, and adjust them only after serious consideration (which may include analysis). The details of this page are significantly out-of-date (post 3.x) and there are pages elsewhere with more appropriate recommendations. The theory listed here though is still valid and for now this page contains to have some merit, although this will be reviewed and updated.

General Guidance

In most Jazz implementations, CLM 2011 used the following settings:

-Xmx4G
-Xms4G
-Xmn512M
-Xgcpolicy:gencon
-Xcompressedrefs
-Xgc:preferredHeapBase=0x100000000

The garbage collection algorithm used above is referred to as gencon, and it will perform optimally for most situations. In some cases, with particular workloads, a modification of the garbage collection algorithm can be beneficial for performance. For a discussion of the various garbage collection algorithms and their impact on performance, read Garbage collection policies, Part 1 on the IBM developerWorks website.
.

|Note: When allocating memory to the JVM (or JVM’s) on a particular server, a good rule of thumb is that the amount of memory allocated to the JVM’s should be, at most, half of all of the available memory. The system also needs memory for operating system related activity and node agent (web server) operations. The settings shown here are a valid starting point for a system that has 8 GB of available memory.
CLM 6.x Sizing Advice explains a few other considerations that have emerged since the 3.x series.

Note: The JVM settings shown above are valid for Windows and Linux servers. Servers with other operating systems might use slightly different settings. It is always best to check the Infocenter section on Setting up WebSphere Application Server for the suggested settings. These are here as an example, and to explain the various switches.

The load on the system is determined by the workload, which is variable and depends on the users and the usage models. Planning your server needs based on concurrent user counts will not be accurate, but it is often the only measure that some organizations have available to them.

Note: When doing initial planning for a Jazz deployment, limit concurrent user sessions on any given Jazz instance to the following: Rational Team Concert (RTC) 200-500, Rational Quality Manager 100-150, Rational Requirements Composer 100-150, Jazz Team Server (JTS) 400-2000. These are conservative “rule of thumb” estimates. You should base any real planning of hardware resources for the deployment of your Jazz solution on the workload that you see on your system, since workloads for different deployments will vary widely. (For example, systems which handle both builds and SCM planning activities for RTC might require additional resources in the JVM nursery. One of the best ways to evaluate what JVM settings are applicable is to monitor the JVM heap while under load.)

|Note: Rational Requirements Composer (until Rational DOORS NEXT Generation 5.0.1) must share a repository with the JTS. This does not mean that they need to reside on the same WebSphere Application Server instance. For versions prior to Rational Requirements Composer 4.0.1, an upper limit of 200 concurrent users per Rational Requirements Composer instance is a good rule of thumb. For Rational Requirements Composer 4.0.1 and beyond, an upper limit of 400 concurrent users per Rational Requirements Composer instance is a good rule of thumb. Another good rule of thumb is not to exceed 200 projects on a single Jazz application server.

Note: Rational DOORS Next Generation sizing has increased with each release. Please see the a more recent sizing guide for CLM 6.x

Default settings

Hardware requirements

The server should be 64-bit and a minimum of 8 GB RAM.

Solaris

-Xmx4g -Xms4g -Xmn512m -XX:MaxPermSize=768M -XX:ReservedCodeCacheSize=512M -XX:CodeCacheMinimumFreeSpace=2M

AIX

-Xmx4g -Xms4g -Xmn512m -Xgcpolicy:gencon -Xnocompressedrefs

Linux

-Xmx4g -Xms4g -Xmn512m -Xgcpolicy:gencon -Xcompressedrefs -Xgc:preferredHeapBase=0x100000000

Windows

-Xmx4g -Xms4g -Xmn512m -Xgcpolicy:gencon -Xcompressedrefs -Xgc:preferredHeapBase=0x100000000

Notes

  • WebSphere Application Server sometimes sets Xcompressedrefs automatically
  • The -Xmx and -Xms settings should never equal or exceed the total amount of memory of the server
  • In general we suggest the use of the gencon garbage collection algorithm in the JVM (-Xgcpolicy:gencon)
    • If more JVM memory is required, the suggestion is that the nursery setting should be one-eighth (1/8) of the start and max setting, as in:
-Xmx{N} -Xms{N} -Xmn{N/8}

Modifying settings

Where to find the settings in WebSphere (WebSphere Application Server)

These instructions are for WebSphere Application Server v8.x. For other versions of WebSphere Application Server, consult Setting generic JVM arguments in WebSphere Application Server

  1. In the Administration Console select Servers
  2. Expand Server Type and select WebSphere application servers
  3. Click on the name of your server
  4. Expand Java and Process Management and select Process Definition.
  5. Under the Additional Properties section, click Java Virtual Machine.
  6. Scroll down and locate the textbox for Generic JVM arguments.

Where to find the settings in Tomcat

When using the Tomcat application server, you should be able to just start up the Tomcat server. The default settings should work fine in most cases. You can adjust the settings used for the JVM by editing the server.startup file in the server directory under your JAZZ_HOME directory. The section with the JVM settings will look like this:

JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
JAVA_OPTS="$JAVA_OPTS -DSQLSERVER_JDBC_DRIVER_FILE=$SQLSERVER_JDBC_DRIVER_FILE"
JAVA_OPTS="$JAVA_OPTS -DORACLE_JDBC_DRIVER_FILE=$ORACLE_JDBC_DRIVER_FILE"
JAVA_OPTS="$JAVA_OPTS -DDB2I_JDBC=$DB2I_ABSPATH"
JAVA_OPTS="$JAVA_OPTS -DDB2Z_JDBC=$DB2Z_ABSPATH"
JAVA_OPTS="$JAVA_OPTS -Dorg.eclipse.emf.ecore.plugin.EcorePlugin.doNotLoadResourcesPlugin=true"
JAVA_OPTS="$JAVA_OPTS -DJAZZ_HOME=file://"`pwd`"/conf"
JAVA_OPTS="$JAVA_OPTS -Dcom.ibm.team.repository.tempDir=$TEMP_DIR"
JAVA_OPTS="$JAVA_OPTS -Dlog4j.configuration=file://"`pwd`"/conf/startup_log4j.properties"
JAVA_OPTS="$JAVA_OPTS -Xmx1200M"
JAVA_OPTS="$JAVA_OPTS -Xms1200M"
JAVA_OPTS="$JAVA_OPTS -Xmn300M"

Be sure that you have considered the following things:

Related topics: Configuring and tuning LDAP

External links:

Additional contributors: None

Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r17 < r16 < r15 < r14 < r13 | More topic actions
Deployment.ConfiguringAndTuningTheJVM moved from Deployment.ConfigureJVM on 2013-11-30 - 21:30 by StevenBeard -
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Contributions are governed by our Terms of Use. Please read the following disclaimer.
Ideas, requests, problems regarding the Deployment wiki? Create a new task in the RTC Deployment wiki project