SpyGlass Remote Profiler
SpyGlass Remote Profiler is a free VisualVM plugin to monitor java code method execution time.
SpyGlass Remote Profiler is designed to control application overhead caused by profiler. For this reason it is a good choice to monitor production systems.
SpyGlass Remote Profiler is a sampling profiler. This means that SpyGlass Remote Profiler sample your JVM stacktrace at given interval and collects statistical execution information creating a summary table. More samples you collect and more accurate is profiling information.
SpyGlass Remote Profiler is an easy and effective tool to understand what your application is doing and if any part of your application has an unexpected behavior. You only need to connect to your application using JMX protocol.
SpyGlass Remote Profiler can be parametrized to concentrate analysis only to piece of code you're interested in:
- Sample time: insert sample interval. You're not suggested to go below 100 ms due to application overhead, you cannot have a sample time below Rate time
- Rate time: reports how many millis are required to collect and elaborate profiling information samples
- Monitor CPU: enabling this check you can monitor low level cpu metrics used in CPU Time panel. Pay attention that this is very resources consuming on your monitored server.
- Method filter: this parameter is used to filter table methods only to package you interest, it has no impact on monitored methods
- Applicative Package filter: this parameter filter monitored methods only to package you insert (semicolon separator). It is used to insert applicative namespace.
- Thread filter: if you want to limit your analysis only to some thread names. Usually you insert "http" to monitor a tomcat application.
Using filter is important to limit impact on server resources.
Profiler panel summarize information collected using stack trace:
- class and method with line number
- Runnable time: how may sample time this method was found in runnable state
- %: pct of total runnable time from profiling session start
- Running time: how much time thread was executing memory or cpu consuming activity
- Waiting time: how may sample time this method was found in waiting or time_waited state
- Blocked time: how may sample time this method was found in blocked state
- I/O Time: how may sample time this method require I/O activity
- Network time: how may sample time this method require network activity
- Database time: how may sample time this method require database activity (considering only most common jdbc driver)
- Total time: how may sample time this method was found in stack traces
- Events: how may sample this method was found in
Even without any knowledge of an application, you can easily underline unexpected behaviors:
- HighCpuServlet is consuming a lot of CPU
- Test filter is wasting a lot of time waiting for resources
- BadSharedObjectServlet spend most of it's time in blocked state probably for a resource contention problem
The CPU Time panel presents low level cpu information for a real CPU impact analysis.
To limit server impacts it is normally disabled. You can activate it with Monitor CPU checkbox.
- class and method with line number
- CPU time: effective CPU usage time
- %: pct of total CPU time time from profiling session start
- User time: effective CPU time in user mode
- System time: effective CPU time in system or kernel mode
- Waiting time: effective waiting time
- Blocked time: effective blocked time
- Events: sampling events
Use this panel to monitor effective impact of method executions.
VisualVM 1.3.1 or better is required to run SpyGlass Remote Profiler. You can look at your bin directory inside your JDK 1.6.x or better or you can download it by yourself (http://visualvm.java.net/)
SpyGlass Remote Profiler cannot be distributed with other products or inside any commercial product package.
See license for more details.