Tình huống: p99 checkout lên 1,2 s trong khi CPU chỉ 40% limit Trung cấp
Thời gian đọc ước tính: 1 phút
CPU limit là quota mỗi 100 ms, chia chung cho mọi thread trong container. Service Node có thể đốt hết quota trong vài mili giây hash song song rồi đứng chờ, trong khi trung bình 1 phút vẫn ghi “40%”.
- Bốn bước: tìm đúng tín hiệu, cưỡng lại các cách sửa nhanh, sửa cho cả fleet, dựng rào chắn.
- Gợi ý: so khoảng thời gian mỗi metric lấy trung bình với độ dài một period CFS.
- Điểm chỉ tính lựa chọn đầu tiên ở mỗi bước. Các con số là minh hoạ.
p99 checkout lên 1,2 s trong khi CPU chỉ 40% limit
Bạn là on-call backend của checkout-api (NestJS, Node 24, 6 replica, mỗi container cpu: 1 và memory: 768Mi cho cả request lẫn limit). Mỗi lựa chọn đổi ngay các chỉ số bên dưới.
Bước 1/4 · Checkout chậm, dashboard yên ắng
Khuyến mãi bắt đầu lúc 20:00. p99 của POST /checkout tăng từ 180 ms lên 1,2 s, gateway trả 504 cho request quá 1 s. p99 của database vẫn phẳng ở 8 ms.
Dashboard chuẩn cho thấy mỗi Pod dùng 40% CPU limit, không restart, không OOMKilled. HPA (target 70% CPU) đứng yên. Bạn nhìn vào đâu trước?
- CPU của Pod, trung bình 1 phút
- ~400m trên 1000m
- p99 database
- 8 ms, không đổi
- traffic
- +60%, một nửa là khách vãng lai
- HPA
- 40% / target 70%, 6 replica
$ kubectl top pod -l app=checkout-api NAME CPU(cores) MEMORY(bytes) checkout-api-7c9d-2kq8n 412m 431Mi checkout-api-7c9d-5wz7r 398m 428Mi checkout-api-7c9d-9hd4m 405m 440Mi ...
Bạn làm gì?
Cơ chế, kèm demo Docker có số đo thật, nằm trong Requests và limits trong Kubernetes.