Hiện tượng này gọi là khuếch đại phần đuôi (tail latency amplification). Nếu một trang gọi song song n service và phải chờ tất cả, latency của trang bằng cái chậm nhất, không phải trung bình.
Với mỗi service có xác suất chậm 1% (p99), xác suất trang gặp ít nhất một lời gọi chậm là 1 - 0.99^n. Với n = 100 thì con số này là 63% — nghĩa là gần hai phần ba số request chạm phải phần đuôi của một service nào đó, dù mỗi service riêng lẻ trông vẫn rất tốt.
Nguồn gây biến động ở từng node: GC pause, cache miss, hàng đợi tại node đang bận, tranh chấp tài nguyên với tiến trình khác, background job như compaction, quản lý điện năng của CPU.
Kỹ thuật giảm phần đuôi:
- Hedged request — gửi bản sao request tới node thứ hai sau khi đợi quá một ngưỡng ngắn (ví dụ p95), lấy kết quả về trước, hủy cái còn lại. Chỉ tốn thêm vài phần trăm tải nhưng cắt phần đuôi rất rõ.
- Tied request — gửi tới hai node cùng lúc kèm thông tin để node nào bắt đầu xử lý thì báo hủy cho node kia.
- Micro-partition + cân bằng lại — chia dữ liệu nhỏ hơn số máy nhiều lần để có thể di dời phần nóng khỏi node chậm.
- Loại node chậm khỏi vòng phục vụ (probation) dựa trên latency, không chỉ dựa trên health check pass/fail.
- Trả kết quả một phần: hết ngân sách thời gian thì trả những gì đã có kèm cờ đánh dấu, thay vì để cả trang chờ.
Giảm số lời gọi tuần tự và gộp nhánh cũng là cách trực tiếp: n nhỏ đi thì phần đuôi khuếch đại ít đi.