我在 grafana 中发现我的 pod <***-qkcdl> 占用了大约 1.0Gcontainer_memory_working_set_bytes
和 1.4G 的container_memory_rss
;
pod的container_memory_rss(最大平均电流)
我对container_memory_working_set_bytes
and的查询container_memory_rss
是:
container_memory_working_set_bytes{k8s_cluster="$cluster", namespace="$dept", pod=~'$pod', container=~"$container"}
container_memory_cache{k8s_cluster="$cluster", namespace="$dept", pod=~'$pod', container=~"$container"}
然后当我跟踪 pprof 堆 inuse_space 时,它显示:
go tool pprof --inuse_space pprof http://{pod_ip}:8899/debug/pprof/heap
Fetching profile over HTTP from http://{pod_ip}:8899/debug/pprof/heap
pprof: read pprof: is a directory
Fetched 1 source profiles out of 2
Saved profile in {local_path}
File: {app}
Type: inuse_space
Time: Oct 15, 2021 at 6:38pm (CST)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof)
(pprof) top10
Showing nodes accounting for 335.36MB, 91.58% of 366.19MB total
Dropped 195 nodes (cum <= 1.83MB)
Showing top 10 nodes out of 77
...
那么,为什么我的golang应用程序只使用了335.36MB的堆空间,而grafana却显示了大约1.0G的working_set_size和1.4G的rss,“335.36MB”、“1.0G”和“1.4G”是什么意思?为什么 ?
PS:我知道指标是什么意思,但它对我没有任何作用
container_memory_rss:匿名和交换缓存内存的数量(包括透明的大页面)。
container_memory_working_set_bytes:工作集内存量,包括最近访问的内存、脏内存和内核内存。工作集是<=“用法”。