🏋️ Load Test là gì?
Thử xem đông người vào cùng lúc thì có sập không.
1
Hiểu nó là gì
Load Test mô phỏng nhiều người dùng truy cập đồng thời để đo tốc độ phản hồi và tìm ngưỡng chịu tải của hệ thống.
Nói theo đời thường:
Như thử cầu bằng cách cho cả đoàn xe tải chạy lên: đi một chiếc thì cầu nào chẳng qua được.
Như thử cầu bằng cách cho cả đoàn xe tải chạy lên: đi một chiếc thì cầu nào chẳng qua được.
⚠ Chỗ ẩn dụ này hỏng
Cho đoàn xe tải chạy lên cầu — nhưng 1000 người dùng ảo không giống 1000 người thật.
Người thật vào rải rác, thao tác khác nhau, có người bỏ giữa chừng, dùng mạng yếu. Công cụ load test bắn đều tăm tắp từ một chỗ, nên dễ ra kết quả đẹp hơn hoặc xấu hơn thực tế. Con số load test là để so sánh giữa các lần, đừng đọc nó như lời tiên tri.
2
Code trông thế nào
// k6 — tăng dần lên 100 người trong 30 giây export const options = { stages: [{ duration: '30s', target: 100 }] } export default function () { http.get('https://vd.com/san-pham') }
Đo hai thứ: thời gian phản hồi và tỉ lệ lỗi. Ngưỡng chịu tải là chỗ hai đường này gãy.
3
Khi nào bạn dùng nó
✓ Dùng khi
- Sắp có đợt cao điểm: sale, tuyển sinh, ra mắt
- Vừa đổi hạ tầng hoặc tối ưu lớn
- Cần biết ngưỡng chịu tải trước khi khách phát hiện ra
✗ Đừng dùng khi
- Chạy trên production giờ cao điểm
- Hệ thống còn đang thay đổi kiến trúc từng tuần
Chưa cần biết: soak test, spike test, đọc biểu đồ phân vị p95/p99, phân tích nút thắt.
Để dành tới Mốc 3 — Tự sửa được khi nó hỏng: Test đỏ trên CI mà xanh ở máy bạn, và bạn biết bắt đầu tìm từ đâu.
Dấu hiệu bạn đã cần học nó: Bạn đã ở mốc này rồi nếu đang lo về ngày sale. Bắt đầu bằng việc đo trạng thái bình thường để có mốc so sánh.
4
Đi đâu tiếp
- CacheVũ khí số một để chịu tải cao.
- ServerThứ đang bị bạn ép tới giới hạn.
- Test EnvironmentLoad test phải chạy ở môi trường riêng, không phải production.