TL;DR
- Bản chất: Throughput (Ops/sec hoặc RPS) đo tốc độ xử lý khối lượng công việc của hệ thống trên một đơn vị thời gian. Latency Percentiles () đo phân bố thời gian phản hồi thực tế của từng nhóm người dùng, phản ánh rủi ro Tail Latency mà số trung bình (Mean/Average) hoàn toàn che giấu.
- Mục đích: (Median) đại diện cho trải nghiệm người dùng phổ thông. và là tiêu chuẩn vàng để cam kết SLA/SLO (Service Level Agreement/Objective), bảo vệ nhóm khách hàng chịu độ trễ tồi tệ nhất.
- Điểm mấu chốt: Không bao giờ dùng Số trung bình (Average) để đánh giá hiệu năng API vì request bị nghẽn (ví dụ: Stop-The-World Garbage Collection, Lock Contention, Disk I/O) sẽ bị số lượng lớn request nhanh làm lu mờ. Trong kiến trúc Microservices, nếu của một service con chậm, toàn bộ request tổng hợp của người dùng sẽ bị kéo chậm theo quy tắc xác suất nhị thức.
Core Concept
1. Throughput: Đơn vị Đo lường Khối lượng Công việc
- Throughput (Thông lượng): Số lượng thao tác (Operations) hoặc yêu cầu (Requests) mà hệ thống hoàn tất thành công trong một giây.
- Đơn vị:
- RPS (Requests Per Second): Dùng cho Web API / HTTP Server.
- QPS (Queries Per Second): Dùng cho Database (PostgreSQL, MySQL).
- Ops/sec (Operations Per Second): Dùng cho Benchmark thuật toán, CPU, Cache Redis, Disk I/O.
- Mối quan hệ Little’s Law trong Hệ thống Hàng đợi:
Trong đó:
- : Số lượng request đang nằm trong hệ thống (Concurrency / In-flight requests).
- : Throughput (RPS).
- : Latency trung bình (Response time).
- Ý nghĩa thực chiến: Nếu Latency tăng gấp 10 lần (do nghẽn DB), để duy trì cùng một Throughput , hệ thống bắt buộc phải giữ số lượng kết nối đồng thời gấp 10 lần → Dẫn đến cạn kiệt Connection Pool và tràn RAM.
2. Bẫy Số Trung Bình (The Flaw of Averages)
Giả sử kiểm thử 100 requests với kết quả thời gian phản hồi:
- 99 requests phản hồi siêu tốc: .
- 1 request bị dính Lock Timeout hoặc Garbage Collection: ( giây).
Tính số trung bình (Mean / Average):
👉 Hậu quả: Con số nhìn có vẻ “khá tốt”, nhưng nó hoàn toàn che giấu sự thật rằng có khách hàng đã phải đứng chờ tới giây và có thể đã bỏ giỏ hàng!
3. Latency Percentiles:
Để nhìn thấy sự thật, ta sắp xếp toàn bộ thời gian phản hồi theo thứ tự tăng dần từ bé đến lớn:
[10ms, 10ms, 12ms, 15ms, ..., 45ms, ..., 120ms, ..., 3500ms]
│ │ │ │
▼ ▼ ▼ ▼
p50 (Trung vị) p90 p95 p99 (Đuôi dài - Tail)
- (50th Percentile / Median - Trung vị):
- số lượng requests có thời gian phản hồi nhỏ hơn hoặc bằng giá trị này.
- Phản ánh trải nghiệm của nhóm người dùng thông thường trong điều kiện lý tưởng.
- (90th Percentile):
- requests phản hồi nhanh hơn mốc này. còn lại bắt đầu chậm hơn.
- (95th Percentile - Chuẩn SLA Tiêu biểu):
- requests hoàn tất dưới mốc này. Chỉ có người dùng gặp độ trễ cao hơn.
- Mức cam kết tiêu chuẩn cho hầu hết các API ứng dụng thương mại điện tử và tài chính.
- (99th Percentile - Tail Latency / Worst Case):
- Mốc thời gian mà requests nhanh hơn, và đại diện cho requests tồi tệ nhất.
- Tại sao lại sống còn?
- người dùng thường là những tài khoản lớn (Power Users: giỏ hàng nhiều sản phẩm nhất, lịch sử giao dịch dài nhất, đại lý mua sỉ khối lượng lớn).
- Trong kiến trúc Microservices, một trang chủ gọi 50 service con song song. Xác suất để người dùng dính phải ít nhất một service bị dính là: Nghĩa là gần người dùng sẽ phải chịu độ trễ của !
Bảng So sánh Ma trận Đo lường
| Chỉ số | Ý nghĩa kỹ thuật | Hiện tượng gây ra | Mục tiêu tối ưu |
|---|---|---|---|
| Throughput (RPS) | Số lượng công việc hoàn tất/giây | Quá tải CPU, nghẽn I/O, bão hòa băng thông | Càng cao càng tốt |
| Latency | Trải nghiệm người dùng thông thường | Tốc độ xử lý code thuần túy, truy vấn index chuẩn | |
| Latency | Ngưỡng cam kết SLA chính thức | Hàng đợi Connection Pool, tranh chấp tài nguyên nhẹ | |
| Latency | Đuôi trễ cực đoan (Tail Latency) | Stop-The-World GC, Row-Level Lock Contention, Disk Flush WAL |
Practical Implementation
Đọc Báo cáo k6 Performance Benchmark
✓ status is 200
checks.........................: 100.00% ✓ 1500 ✗ 0
http_req_duration..............: avg=32.4ms min=8.1ms med=18.2ms max=890.5ms p(90)=42.1ms p(95)=68.4ms p(99)=185.2ms
http_reqs......................: 1500 99.82/s
http_reqs: Đạt thông lượng xấp xỉ (Requests Per Second).med(): (Người dùng bình thường nhận kết quả cực nhanh).p(95): (Đạt cam kết SLA dưới ).p(99): vàmax: (Cảnh báo: Có hiện tượng nghẽn nhẹ do tranh chấp khóa cơ sở dữ liệu ở nhóm cuối cùng).
Related Notes
- Finite_State_Machine_and_Concurrency_Guard: Tranh chấp khóa ảnh hưởng trực tiếp đến latency.
- Master_Backend_Engineering_SSOT: Tiêu chuẩn vàng hiệu năng hệ thống backend.
- 000_Concepts_MOC: Danh mục lý thuyết nền tảng khoa học máy tính.