Nhiều khả năng container đang bị CPU throttling do limits.cpu. Đây là bẫy vận hành kinh điển vì biểu đồ CPU trung bình trông rất bình thường.
Cơ chế: CPU limit không phải "tốc độ tối đa" mà được thực thi bằng CFS quota của cgroup: mỗi chu kỳ 100ms, container chỉ được dùng limit × 100ms CPU-time. Hết quota giữa chu kỳ thì mọi thread bị dừng cho tới đầu chu kỳ sau. Với limits.cpu: 500m, container chỉ có 50ms mỗi 100ms — một request bùng nổ ngắn có thể lãnh thêm hàng chục ms chờ.
CPU trung bình 30% mà vẫn throttle là bình thường: mức trung bình 1 phút che mất các đợt bùng nổ trong từng cửa sổ 100ms.
Xác nhận bằng metric cgroup container_cpu_cfs_throttled_periods_total chia cho container_cpu_cfs_periods_total. Tỉ lệ đáng kể là throttling đang gây latency.
Xử lý:
- Nâng hoặc bỏ hẳn limits.cpu cho service nhạy latency, giữ requests.cpu đúng để scheduler vẫn đặt Pod hợp lý. CPU là tài nguyên compressible — không có limit thì Pod chỉ bị chia sẻ chậm lại, không bị giết như memory.
- Chỉnh song song tham số song song của runtime (GOMAXPROCS, thread pool) cho khớp CPU thực sự được cấp.