Recently encountered an issue in one of our application server. Issue is 98% CPU utilization. Everyone ran into and observed that JVM is striving to recover. Here definitely should appreciate GC.
As a software doctor , conducted tests with following tools to recover it from hanging.
‘jstack’ is an effective command line tool to capture thread dumps. The jstack tool is shipped in JDK_HOME\bin folder.
Example usage: jstack <pid> >> <thread dump file>
Java VisualVM is a graphical user interface tool that provides detailed information about the applications while they are running on a specified Java Virtual Machine (JVM). It’s located in JDK_HOME\bin\jvisualvm.exe. It’s part of Sun’s JDK distribution since JDK 6 update 7.s
Launch the jvisualvm. On the left panel, you will notice all the java applications that are running on your machine. You need to select your application from the list. This tool also has the capability to capture thread dumps from the java processes that are running in remote host as well.
Java Mission Control (JMC) is a tool that collects and analyze data from Java applications running locally or deployed in production environments. This tool has been packaged into JDK since Oracle JDK 7 Update 40. This tool also provides an option to take thread dumps from the JVM. JMC tool is present in JDK_HOME\bin\jmc.exe
Once you launch the tool, you will see all the Java processes that are running on your local host. Note: JMC also has the ability to connect with java processes running on a remote host. Now on the left panel click on the “Flight Recorder” option that is listed below the Java process for which you want to take thread dumps.
There are so many other options to monitor JVM , can use any APM tools OR can use some native products like OverOPS. Recently attended a fantastic webinar on OverOPS.