云容器引擎 CCE
云容器引擎 CCE
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- 常见问题
- 文档下载
- 通用参考
链接复制成功!
容器监控的内存使用率与实际弹性伸缩现象不一致
问题现象
容器监控的内存使用率与实际弹性伸缩现象不一致,例如容器内存使用率在界面上显示为40%左右,而HPA设置缩容阈值为70%,但界面上显示的内存使用率低于HPA阈值后并没有发生缩容。
问题根因
界面上显示的容器内存使用率与HPA弹性伸缩的内存使用率在计算方式上存在差异:
- 界面上显示的容器内存使用率计算方式为:container_memory_rss/内存Limit
container_memory_rss(即Resident Set Size,RSS)包含了部分可能并不活跃或未被有效利用的内存部分。
- HPA对于内存使用率弹性伸缩的计算方式为:container_memory_working_set_bytes/内存Request
container_memory_working_set_bytes(即Working Set Size,WSS)的计算方式如下:
在Pod中执行cat /sys/fs/cgroup/memory/memory.stat,得到total_cache(缓存内存量)、total_rss(当前应用进程实际使用内存量)、total_inactive_file(不活跃文件内存使用量)。
WSS = total_cache + total_rss - total_inactive_file
如果您的应用存在以下情况,均可能导致HPA的扩容行为与预期不符,出现界面上显示的内存使用率低于HPA缩容阈值后并没有发生缩容,或者界面上显示的内存使用率未高于HPA扩容阈值但发生扩容等现象。
- 应用缓存占用非常高,WSS明显大于RSS,导致界面上显示的容器内存使用率小于HPA计算的内存使用率。
- Limit与Request配置差异较大时,Request明显小于Limit,导致界面上显示的容器内存使用率小于HPA计算的内存使用率。
父主题: 监控日志