为什么k8s中的golang容器显示线性内存泄漏,而htop没有显示泄漏?

avkwfej4  于 2024-01-04  发布在  Go
关注(0)|答案(1)|浏览(102)

我有一个用golang写的微服务,它可以处理图像和其他东西。
在k8s中,它显示线性内存增长x1c 0d1x
但是在htop中,它有稳定的内存使用。我在本地测试了它-也是稳定的。

我明白,k8s显示了一些不同的内存使用情况,但它是什么?以及如何从golang释放/释放这些内存?没有大型堆。GC正常运行,我甚至每10秒从Go运行debug.FreeOSMemory()

# cat /sys/fs/cgroup/memory/memory.stat
cache 3095613440
rss 189210624
rss_huge 0
shmem 0
mapped_file 1548288
dirty 15630336
writeback 0
pgpgin 7268911
pgpgout 6466952
pgfault 6519532
pgmajfault 15
inactive_anon 0
active_anon 189140992
inactive_file 628293632
active_file 2467319808
unevictable 0
hierarchical_memory_limit 8589934592
total_cache 3095613440
total_rss 189210624
total_rss_huge 0
total_shmem 0
total_mapped_file 1548288
total_dirty 15630336
total_writeback 0
total_pgpgin 7268911
total_pgpgout 6466952
total_pgfault 6519532
total_pgmajfault 15
total_inactive_anon 0
total_active_anon 189140992
total_inactive_file 628293632
total_active_file 2467319808
total_unevictable 0

字符串

yzckvree

yzckvree1#

看起来你的缓存正在消耗更多的内存(目前为3GB),这可能是超过内存限制的原因。它不应该在4GB时OOM,因为你的内存限制为8GB。

相关问题