背景

容器平均 CPU 不高却出现周期性延迟,可能是短时间突发耗尽了 cgroup 配额。宿主机空闲并不代表容器随时可以继续运行。

核心判断

  1. 检查 cpu.max 的配额周期和 cpu.stat 的节流增量。
  2. 将节流、线程数、CPU 使用和请求 p99 对齐。
  3. 区分配额限制、调度争用与程序自身锁竞争。

最小示例

下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。

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,按延迟目标设置资源限制。