Skeyevss FAQ:cgroups 与 CPU/内存限流
试用安装包下载 | SMS | 在线演示
项目地址:https://github.com/openskeye/go-vss
1. CPU limit 与 throttling
容器CPU quota过低时,内核throttle进程,表现为延迟升高、SIP 超时,但top可能仍显示未满载。用container_cpu_cfs_throttled_seconds等指标观察。
GoGOMAXPROCS默认识别可见 CPU 数;在 cgroup v2 与旧运行时组合下偶有不一致,需关注发行说明。
2. Memory limit 与 OOM
超过memory.limit_in_bytes触发OOMKill,进程无机会优雅退出。视频、缓存组件RSS 尖峰明显,limit 应高于稳态 + 合理突发。
3. I/O 与 blkio
磁盘带宽/iops限制会导致录像写入延迟,进而背压到内存。若使用云盘,还要考虑突发积分用尽。
4. 调优原则
- request保障调度,limit防止邻域噪声;
- 对SIP 接入类延迟敏感服务,避免 limit 过紧;
- 压测时同时监控 throttle 与 OOM。
5. 与物理机对比
物理机无 cgroup 时靠整机资源;上容器后相同代码可能变慢,不一定是 bug,而是资源隔离暴露了新约束。
cgroup把「变慢」变成可量化指标;排障时先看throttle/OOM,再看应用日志。