Percentile là ngưỡng mà dưới đó rơi vào một tỷ lệ request nhất định. p99 = 800 ms nghĩa là 99% request nhanh hơn 800 ms, 1% chậm hơn.
Trung bình che giấu phần đuôi. Giả sử 1000 request: 990 request 50 ms, 10 request 5000 ms. Trung bình = 99 ms — trông rất tốt, nhưng 10 người dùng đã chờ 5 giây. Latency phân phối lệch phải nặng, nên trung bình không đại diện cho trải nghiệm thực tế; các mốc percentile mới cho biết hình dạng phần đuôi.
Vì sao phần đuôi quan trọng hơn ta tưởng:
- Người dùng hoạt động nhiều nhất tạo nhiều request nhất, nên xác suất họ gặp phải request chậm cũng cao nhất.
- Một trang gọi 20 dịch vụ song song và phải chờ cả 20 sẽ có latency bằng cái chậm nhất. Với p99 = 1% mỗi lời gọi, xác suất trang chạm phải ít nhất một lời gọi chậm là khoảng 1 - 0.99^20, tức ~18%. Phần đuôi bị khuếch đại theo số nhánh.
Cách dùng đúng:
- Đặt SLO theo p95/p99, không theo trung bình.
- Không lấy trung bình của các percentile giữa các máy — phải gộp histogram rồi tính lại.
- Theo dõi p50 và p99 cùng lúc: p50 tăng nghĩa là toàn hệ chậm đi; chỉ p99 tăng thường là GC pause, cache miss, một node lỗi, hoặc hàng đợi cục bộ.