WebSphere Application Server runs on top of IBM’s Java Virtual Machine, so one of the ways of tuning WebSphere performance is to tune the JVM. IBM publishes the excellent Diagnostic Guides for Java, which will give you a thorough overview of the JVM and great debugging, troubleshooting and tuning advice.
IBM’s general purpose problem determination tool also offers some really cool graphical tools to assist with JVM tuning. In this post, I’m going to quickly run through which ISA plugins I like to use.
If you don’t have ISA installed yet, you can download the latest version here, for our purposes you’ll need the Workbench version, not the Lite version.
Be aware that the default heap size currently configured for IBM Support Assistant is not all that useful for diagnosing large amounts of JVM data, so I strongly recommend you increase the heap available to ISA. You can do this by editing the jvm.properties file found in <ISA_INSTALL_DIR>/rcp/eclipse/plugins/com.ibm.rcp.j2se.win32.x86_188.8.131.5290211a-200903301321. Simply change the –Xmx256m line to something larger, such as –Xmx1024m.
Once installed and with your heap increased, click Update –> Find New… –> Tools Add-ons as shown below:
On the next screen expand JVM-based Tools, and then select the plugins that start “IBM Monitoring and Diagnostic Tools for Java” as shown below:
At a high-level, these tools will enable you to:
IBM Monitoring and Diagnostic Tools for Java – Dump Analyser
Perform problem determination on JVM crashes or hangs caused by OutOfMemoryErrors, application code deadlocks and unexpected signals.
IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory Visualiser
Visually inspect and improve JVM performance by understanding memory usage and garbage collection behaviour.
IBM Monitoring and Diagnostic Tools for Java – Health Center
Connect to a running JVM and perform real-time problem determination on garbage collection, i/o activity, locking, memory usage and more.
IBM Monitoring and Diagnostic Tools for Java – Memory Analyzer
Inspect heapdumps from IBM JVMs to identify memory leaks and understand application memory usage.