Several tools are available that can be used to collect information for troubleshooting purposes. This section provides basic information about some of them, and includes the following:
Operating system utilities, such as pkginfo and showrev on Solaris and rpm on Linux, are helpful in gathering system information.
The ps -ef command provides helpful information about processes that are running, including their process identification numbers (PIDs).
A stack trace is a user-friendly snapshot of the threads and monitors in a Virtual Machine for the Java platform (Java Virtual Machine or JVMTM machine). A thread dump shows what every thread in a JVM is doing at a given time and is useful in debugging. When the application server freezes, hangs, or becomes sluggish for no apparent reason, you should generate and analyze a thread dump.
This section explains how to obtain a thread dump for GlassFish Server. More information about analyzing the information contained in a thread dump can be found in “An Introduction to Java Stack Traces” (http://java.sun.com/developer/technicalArticles/Programming/Stacktrace).
VisualVM is a Java troubleshooting tool that uses various technologies such as jvmstat, JMXTM, and Attach API to access monitored applications. VisualVM is a tool for visualizing data sources and by default visualizes the following types: applications, hosts, snapshots, core dumps, heap dumps, and thread dumps. These data sources are visualized in VisualVM so that they can be monitored for the purposes of analysis, management, and troubleshooting. VisualVM is commonly used to detect memory leaks.
VisualVM has a GlassFish plugin that enhances monitoring of hosted applications by adding specialized overview, a tab for monitoring the HTTP Service, and the ability to visually select and monitor any of the deployed web applications. You can experiment with VisualVM troubleshooting capabilities, but note that various features depend on the Java versions used in the client and server. Depending on your configuration, you might only get parts of the VisualVM features. For more information about VisualVM, see https://visualvm.dev.java.net.
JVM command-line tools can be used to provide valuable information about hung Java processes or Java core dumps. These tools include the following:
jstack: Prints Java stack traces of Java threads for a given Java process or core file or a remote debug server.
jinfo: Prints Java configuration information for a given Java process or core file or a remote debug server.
jmap: Prints shared object memory maps or heap memory details for a given process or core file or a remote debug server.
jsadebugd: Attaches to a Java process or core file and acts as a debug server. Remote clients such as jstack, jmap, and jinfo can attach to the server using Java Remote Invocation Method (RMI).
jhat: Enables Java heap dumps to be browsed using a web browser.
jstat: Displays performance statistics for an instrumented HotSpot JVM.
jps: Lists the instrumented HotSpot JVMs on the target system