作者:执笔W写下我们的故事 | 来源:互联网 | 2023-02-05 18:45
我已经创建了85个容器,并且所有容器在我的Linux机器上都运行相同的.NET核心应用程序映像。我对所有容器的REST调用是相同的,但是每个容器使用的内存都不同。
这是我不明白的。为什么使用不同的内存,因为所有容器都运行相同的映像,并且REST调用也相同?
通过使用以下方法,我能够获得容器使用的内存:
docker stats
CONTAINER- 7827fe8127eb
CPU - 0.00%
MEM USAGE / LIMIT - 67.1MiB / 7.666GiB
MEM % - 0.85%
NET I/O - 76.4kB / 6.19kB
BLOCK I/O - 42.7MB / 0B
从以上统计信息中,我知道容器使用的内存为67.1 MB。
然后,我进入了容器,并试图找出正在运行的进程以及这些进程使用的内存。
docker exec -i -t 7827fe8127eb /bin/bash
top
现在,从“ docker stats”获得的统计数据表明容器内存为67 MB,但是该dotnet
进程使用的内存是多少?
"RES"
列值是否提供过程内存?由于RES
大小为92.70 MB,大于容器内存。
我使用Docker引擎API来获取容器统计信息。但是我不确切知道哪个属性指定了容器内存。
"memory_stats": {
"usage": 72302592,
"max_usage": 84365312,
"stats": {
"active_anon": 47865856,
"active_file": 6664192,
"cache": 24477696,
"dirty": 4096,
"hierarchical_memory_limit": 9223372036854772000,
"inactive_anon": 8450048,
"inactive_file": 9318400,
"mapped_file": 16236544,
"pgfault": 118960,
"pgmajfault": 104,
"pgpgin": 120339,
"pgpgout": 105242,
"rss": 47824896,
"rss_huge": 8388608,
"total_active_anon": 47865856,
"total_active_file": 6664192,
"total_cache": 24477696,
"total_dirty": 4096,
"total_inactive_anon": 8450048,
"total_inactive_file": 9318400,
"total_mapped_file": 16236544,
"total_pgfault": 118960,
"total_pgmajfault": 104,
"total_pgpgin": 120339,
"total_pgpgout": 105242,
"total_rss": 47824896,
"total_rss_huge": 8388608,
"total_unevictable": 4096,
"total_writeback": 0,
"unevictable": 4096,
"writeback": 0
},
"limit": 8231383040
},
我找不到,这里还有67.1 MB。
首先,为什么每个容器使用的内存都不相同,因为它们运行的是同一映像,并且执行的REST操作也相同?
发现某些容器使用的内存高达93 MB,那么哪个容器进程实际上在消耗最大的内存?