What is Apdex?
Apdex (Application Performance Index) is an open standard that turns response times into one score from 0 to 1. You pick a target time T; requests at or under T count as satisfied, those up to 4T as tolerating, slower ones and errors as frustrated. Apdex = (satisfied + tolerating ÷ 2) ÷ total.
Why Apdex matters
Averages hide pain: an average of 300 ms can contain a long tail of 5-second requests. Apdex counts how many requests were fast enough, so a growing tail shows up as a falling score even when the mean barely moves.
Because it is a ratio between 0 and 1, Apdex lets you compare endpoints and services with very different speeds, as long as each has a T that fits its job. A search endpoint and a report export should not share the same T.
How to measure Apdex
Apdex_T = (satisfied + tolerating ÷ 2) ÷ total samples satisfied: response time ≤ T tolerating: T < response time ≤ 4T frustrated: response time > 4T (most tools also count failed requests here)
Worked example
An endpoint with T = 500 ms handled 1,000 requests in an hour: 820 finished within 500 ms, 120 took between 500 ms and 2,000 ms (4T), and 60 took longer or failed.
- Satisfied = 820, tolerating = 120, frustrated = 60 (820 + 120 + 60 = 1,000).
- Tolerating requests count half: 120 ÷ 2 = 60.
- Apdex = (820 + 60) ÷ 1,000 = 0.88.
Result: 0.88 falls in the 0.85 to 0.93 band the Apdex rating scale calls good. If the 60 frustrated requests were all errors, fixing them would lift the score more than making fast requests faster.
Common mistakes
- One T for everything. A login page and a CSV export have different expectations. Set T per endpoint or per service.
- Choosing T from today's performance. If T is your current median, the score looks fine by definition. Choose T from what users need.
- Leaving errors out. A fast 500 error is not a satisfied user. Count failed requests as frustrated.
- Reading the score without volume. A score of 0.5 from 4 requests at 3 a.m. is not an incident. Look at the sample count before reacting.
How Vigil handles Apdex
- Vigil's APM computes Apdex per endpoint from the latency histogram it keeps for every traced endpoint, with a T you set yourself; the server's Traces tab has an Apdex view.
- Traces come from Vigil's Python and Node SDKs or from any OpenTelemetry SDK pointed at the OTLP endpoint; the quick start covers nine languages.
- A trigger can alert when Apdex drops below a value you choose, with a warm-up and a cooldown so one slow minute does not page anyone.
Apdex: frequently asked questions
What is a good Apdex score?
The Apdex rating scale calls 0.94 to 1.00 excellent, 0.85 to 0.93 good, 0.70 to 0.84 fair, 0.50 to 0.69 poor and anything lower unacceptable. Watch the trend per endpoint rather than one number.
How do I choose T?
Start from what users notice: for an interactive API a few hundred milliseconds is common. Then check that 4T, where requests become frustrated, really is too slow for that page or call.
Is Apdex better than p95 latency?
They answer different questions. p95 says how slow the slow requests are; Apdex says what share of requests met the target. Many teams chart both side by side.