我在AWS ECS上的docker容器中运行了一个nodejs应用程序。随着流量的增加,报告的内存就像内存泄漏一样不断增长。流量越大,增长就越快。然而,在检查实例内部具有top和free -m的内存之后,内存(rss)是稳定的,并且远远低于docker的统计数据。
在bash中的实例内部,这里是来自cgroup的内存: rss +缓存+交换非常接近来自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发布于 2020-01-27 18:23:16
内核内存使用量+ rss非常接近memory.usage,并且内核内存使用量一直在增长
如果我通过echo 3 | sudo tee /proc/sys/vm/drop_caches删除内核缓存,内存就会立即崩溃。
因此内核内存缓存不会计入cgroup的内存状态缓存中。
https://stackoverflow.com/questions/59922728
复制相似问题