背景
容器平均 CPU 不高却出现周期性延迟,可能是短时间突发耗尽了 cgroup 配额。宿主机空闲并不代表容器随时可以继续运行。
核心判断
- 检查 cpu.max 的配额周期和 cpu.stat 的节流增量。
- 将节流、线程数、CPU 使用和请求 p99 对齐。
- 区分配额限制、调度争用与程序自身锁竞争。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
cat /sys/fs/cgroup/cpu.stat; cat /sys/fs/cgroup/cpu.max; pidstat -u -t 1 5
边界与误区
示例路径适用于 cgroup v2,必须进入目标进程所属 cgroup。累计节流时间不是单个请求等待时间,也不能直接当作 CPU 利用率。
验证方式
用短时突发负载比较不同配额,观察延迟和依赖影响。增加限额前确认节点容量,减少无效并发可能比继续扩线程更有效。
小结
同时查看 usage、quota、throttled time 和 run queue,按延迟目标设置资源限制。