Skip to content

Latest commit

 

History

History
50 lines (33 loc) · 4.12 KB

File metadata and controls

50 lines (33 loc) · 4.12 KB

监控指标

容器监控的内存相关指标

名称 类型 单位 说明
container_memory_rss gauge 字节数bytes RSS内存,即常驻内存集(Resident Set Size),是分配给进程使用实际物理内存,而不是磁盘上缓存的虚拟内存。RSS内存包括所有分配的栈内存和堆内存,以及加载到物理内存中的共享库占用的内存空间,但不包括进入交换分区的内存。
container_memory_usage_bytes gauge 字节数bytes 当前使用的内存量,包括所有使用的内存,不管有没有被访问。
container_memory_max_usage_bytes gauge 字节数bytes 最大内存使用量的记录。
container_memory_cache gauge 字节数bytes 高速缓存(cache)的使用量。cache是位于CPU与主内存间的一种容量较小但速度很高的存储器,是为了提高cpu和内存之间的数据交换速度而设计的。
container_memory_swap gauge 字节数bytes 虚拟内存使用量。虚拟内存(swap)指的是用磁盘来模拟内存使用。当物理内存快要使用完或者达到一定比例,就可以把部分不用的内存数据交换到硬盘保存,需要使用时再调入物理内存
container_memory_working_set_bytes gauge 字节数bytes 当前内存工作集(working set)使用量。
container_memory_failcnt counter 申请内存失败次数计数
container_memory_failures_total counter 累计的内存申请错误次数

一般来说:

container_memory_max_usage_bytes > container_memory_usage_bytes >= container_memory_working_set_bytes > container_memory_rss

如果说开发想看自己应用实际内存占用,那就可以用rss,表达式如下:

sum by(container_name) (container_memory_rss{pod_name="$pod", container_name=~"$container", container_name!="POD"})

wss 过高问题

有时候在容器中可能会出现 WSS过高的情况,如下图所示:

container_memory_working_set_bytes 指标的组成实际上是 RSS + Cache。而 Cache 高的情况,常见于进程有大量文件 IO,占用 Cache 可能就会比较高。

可以通过回收 页缓存(page cache) 来临时解决:

echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。

参考