Percentiles Made Easy

Performance monitoring comes in all different shapes and sizes but the end goal is the same. Performance monitoring tools exist to help ensure a fast and stable quality of service. Statistically speaking there are many methods to determine just how good of an overall experience your application is providing but today we are going to focus on Percentiles. I’ll explain what percentiles are and how they should be used to understand your application performance better.

When you want to know how your application is performing from a macro perspective you need to understand the concept of percentiles. Let’s take a look at an example. Figure 1 below is a histogram which represents transaction response times (you can click on the chart to see a larger version in a new tab). Each bar represents a grouping of transactions that fall within 400ms of each other with the fastest group on the left.


Figure 1: Histogram of response times showing average response time, and 95th percentile. (Click chart for larger version in new tab)

μ(a) from our histogram is the arithmetic mean or average response time. You’ll also notice a vertical dotted line labeled 95. This line represents the associated percentile. For example the 95th percentile (shown) is roughly 15 seconds; this means that 95% of the transactions completed in 15 seconds or less. Ideally we want as many of our transactions as possible to have the fastest response time possible; so in an ideal world the 95th percentile line would shift left to approach μ(a). Percentiles, when compared with averages, tell us how consistent our application response times are. Let’s take a look at percentiles and averages plotted on the same chart.


Figure 2: Average response time and 95th percentile plotted on same chart. (Click chart for a larger version in a new tab)

Figure 2 above shows the average response time (ART) in green and the 95th percentile plotted in blue. You can see that the ART peaks out at about 1400 ms while the 95th percentile tops out at about 2600 ms. What does this tell us and what should our response be? Well, it depends on how fast you want your application to run.

  • If having a lot of transactions that take between 1.4 and 2.6 seconds is okay for your particular application then you are probably in good shape and don’t have much to do except for tracking down the outliers (the 5% of transactions that take longer than 2600 ms) and figuring out if you can make them faster.
  • If you need the majority of your transactions completing in less than 1400 ms then know you have a lot of work to do with optimizing your platform since so many transactions take longer than 1400 ms.

The whole point of this discussion is to provide an introduction to percentiles and to let you know how to interpret and react to the data once you have it plotted out. Percentiles are just another statistical tool that is available to help manage application performance and like any tool you need to know how to use it for it to be valuable. If you’re looking to make your application faster and more stable you can try AppDynamics Pro for free today by clicking here.

AppDynamics 3.7.8 – New Features Abound

I love it when my favorite applications release new features. AppDynamics has shifted to a new release model which enables us to release more features faster while maintaining high quality code. The end result is that you, the users, get the cool features you need without having to wait around for 6 months for a big bang release. So what goodness have we cooked up for you in this release?

Core Product

Awesome RabbitMQ Support – RabbitMQ worked just fine in prior version of AppDynamics but we wanted to make it super easy for you to get the exact instrumentation details you want. You asked for it, we listened, and here it is…


Percentile Metrics – Averages have long been the standard for measuring response time over time but we understand that percentiles can provide additional insight into the distribution of your transaction response times. To arm you with the best information possible we have introduced percentile metrics for all Business Transactions. By default we show 95th percentile but you can change that to whatever you want.


HTML5 Navigation – We’re in the process of shifting our entire UI to HTML. We started with the navigation menus to provide a faster user experience for everyone. HTML5 Navigation menus are now turned on by default.

Java Specific

Open Mbeans – Open Mbeans enable functionality that normal mbeans can’t handle (like gathering tabular data). Open MBeans are now supported by AppDynamics Pro.

GlassFish Appserver Management Extensions (AMX) – If you use GlassFish and monitor using AMX you’re in luck. We now support AMX out of the box and have preconfigured rules to get your AMX data into AppDynamics.

GlassFish AMX

Database Specific

Sybase IQ – Extending our industry leading database support, AppDynamics now officially supports Sybase IQ. If you’ve got a Sybase IQ data warehouse that needs monitoring you’ll want to check out AppDynamics for database monitoring.

PHP Specific

For PHP here is our list of new features

  • 32-bit x86 support
  • Apache 2.4 support
  • RPM Installer
  • memcache as an auto-detected cache exit point


.NET Specific

  • New unified configuration
  • New node naming
  • Improved URL rewrites and BT naming
  • Parameterized installer

This rapid release has more new features than most companies major releases. We’re going to blog in more detail about some of these features in upcoming weeks so keep an eye out. We’ll also keep you updated every time we have a rapid release right here in our blog so be sure to subscribe to our RSS feed (contrary to Googles opinion, RSS is not dead) so you don’t miss out. If you’re not already an AppDynamics customer you can take a free self service trial by clicking here.