If you’re trying to root out application performance bottlenecks on your production JVM environment – then you are faced with some significant challenges.
Knowing where and what to tune up within your applications can be a major headache. APM tools can help and generally they provide metrics which will highlight slow running queries or poorly performing requests. However, what if you’re looking for performance issues within your actual code – you know it’s performing poorly – but you want to understand exactly how slow and then figure out why!
For performance issues, (unless you’re already using FusionReactor!) you may think of using a profiler, such as JProfiler or jvisualvm. However, it’s not easy to attach such tools to a specific process (especially in production) and it’s common knowledge that such tools impose a heavy performance burden themselves which essentially will render them useless in a production environment.
We now have an alternative – FusionReactor’s Production Java Profiler.
FusionReactor 6 Ultimate Edition now includes a Production Profiler for Java, which is designed to help you identify bottlenecks in your production environment. The Production Profiler is VERY low overhead, so you gain maximum benefit, without impacting your applications. The profiler may be run on demand, but is switched on by default, so that it will automatically profile your application as soon as it detects a long running request or transaction. You can also limit the number of profile samples which are taken, which will enable you to control the level of accuracy of the sample. Our tests have shown that even with limited samples, the insight you gain into performance bottlenecks is invaluable.
What can you profile?
Any requests or transactions which are running on the JVM – e.g. Tomcat, JBoss, WildFly, Glassfish, Jetty etc. ColdFusion applications can also be profiled– as well as any other applications which are currently being monitored by FusionReactor 6.1 or higher.
What do you have to do to start profiling?
Install FusionReactor 6.1 or above – activate it using either a TRIAL license, or your own FR Ultimate license – and that’s it. The Production Profiler is automatically configured to immediately profile any request or transaction which runs longer than 3 seconds. The default profiling sample is 200ms.
You can also profile individual requests by simply clicking on the Profile now button – indicated by the Clock icon – which you can see next to any running request.
As requests are profiled, they will be listed in the Profiled requests or transactions screen – as in the example below.
Clicking on the Profiler link, will take you to the Profiler details page – which shows a breakdown– represented in time and percent of how long was spent in specific sections/areas of your application code. The profile taken is basically an inverted view of the call stack.
Bottlenecks are generally easy to spot. In our opinion, optimizing every part of your code is not worth the effort. Efforts should be focused on code segments where returns are higher, or rather highest.
Features and Benefits
- When FusionReactor Ultimate is running, then profiling will start automatically for any request/transaction which runs for longer than 3 seconds. Note that this threshold can be easily altered to suit your needs.
- Profiling can also be started on demand.
- Find the root cause of performance bottlenecks in your application by viewing the profiled call stack in a top to bottom view.
- Performance is shown in terms of time spent within that method – shown in seconds. The time will also be shown as a percentage.
- Profile anything that runs on the JVM – without having to make any Java command line changes or restarting any processes – everything is built into FusionReactor Ultimate Edition.
If you would like to evaluate FusionReactor Ultimate – please download a trial license here