newrelicapdex

How arrive at an Apdex Threshold value based on the SLA?


We have a REST API available. For each of the endpoints that this API offers, we have a defined SLA based on the internal testing. New Relic provide an option to define the Apdex T score on a per application basis. Considering a scenario as follows:

So, how do we arrive at an Apdex Threshold value in such scenarios? I went through the following article from New relic: LINK. This makes sense when we look the service as a whole, but not when we look at each of the endpoints.


Solution

  • Are you sure you want to set Apdex based on your SLA?

    I would suggest that typical performance of the application is the better metric to be looking at. Lets say if over the last 7 days your application has an average performance. However in the "How to set an Apdex T", the article suggests using a percentile for your typical performance.

    So if you get the 90th Percentile, it should result typically in a near 0.95 Apdex Score. Obviously Apdex of 1 is useless as you're not holding your account to near enough account. So I would individually ask Insights

    select percentile(duration, 90) from Transaction where appName="AppA" since 7 days ago

    select percentile(duration, 90) from Transaction where appName="AppB" since 7 days ago

    This will give you a response time that 90% of your customers are getting better than. So should be a good rough guide as to your Apdex T value.

    If however your goal is that on App A where SLA is 200ms and ANY transaction over that should be 0 points towards the Apdex score. Then quite simply your Apdex T should be 50ms. Because anything faster than 50ms gets 1 point, anything between Apdex T and 4 x Apdex T gets 0.5 points, but at least is still scoring. Anything slower than 4 x Apdex T (in this scenario 200ms) gets 0 points towards Apdex. So that would give you transactions marked as Frustrated for Apdex if they violate the SLA.

    Apdex is a bit of an art but you can definitely get to where you need with either of the above. I hope I covered off the two scenarios I see as being likely in this case.