【发布时间】:2020-05-12 07:58:41
【问题描述】:
我有一个 nodejs 应用程序在 AWS ECS 上的 docker 容器内运行。报告的内存随着流量不断增长,就像内存泄漏一样。流量越大,增长越快。但是,在实例内部使用 top 和 free -m 检查内存后,内存 (rss) 是稳定的并且远低于 docker stats。
在 bash 中进入实例,这里是来自 cgroup 的内存:rss + cache + swap 非常接近来自 top 的内存,也来自 nodejs 内的 os.memoryUsage().rss 的内存,但太远了来自 memory.usage_in_bytes。这怎么可能?
root@ip-10-1-10-197:/app# cat /sys/fs/cgroup/memory/memory.kmem.usage_in_bytes
192913408
root@ip-10-1-10-197:/app# cat /sys/fs/cgroup/memory/memory.usage_in_bytes
280588288
root@ip-10-1-10-197:/app# cat /sys/fs/cgroup/memory/memory.stat
cache 8192
rss 86421504
rss_huge 0
shmem 0
mapped_file 0
dirty 0
writeback 0
swap 0
pgpgin 199618711
pgpgout 199597610
pgfault 358572897
pgmajfault 0
inactive_anon 0
active_anon 86396928
inactive_file 4096
active_file 4096
unevictable 0
hierarchical_memory_limit 536870912
hierarchical_memsw_limit 9223372036854771712
total_cache 8192
total_rss 86421504
total_rss_huge 0
total_shmem 0
total_mapped_file 0
total_dirty 0
total_writeback 0
total_swap 0
total_pgpgin 199618711
total_pgpgout 199597610
total_pgfault 358572897
total_pgmajfault 0
total_inactive_anon 0
total_active_anon 86396928
total_inactive_file 4096
total_active_file 4096
total_unevictable 0
【问题讨论】:
-
在内核文档/cgroup-v1/memory.txt 中,您会发现以下文本: > 主“kmem”计数器被输入主计数器,因此用户也可以看到 kmem 费用计数器。
标签: docker amazon-ecs cgroups