CoreOS单容器高内存使用率

时间:2016-01-26 14:21:27

标签: memory docker coreos

所以我有一个简单的Go Web应用程序,我部署为Docker容器。我正在使用CoreOS AMI在AWS上运行t2.small实例。

容器非常小,根据docker stat仅使用大约10MB的内存:

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O
8e230506e99a        0.00%               11.11 MB / 2.101 GB   0.53%               49.01 MB / 16.39 MB   1.622 MB / 0 B

然而,CoreOS实例似乎使用了大量内存:

$ free
             total       used       free     shared    buffers     cached
Mem:       2051772    1686012     365760      25388     253096    1031836
-/+ buffers/cache:     401080    1650692
Swap:            0          0          0

正如你所看到的那样,它的2GB总内存使用了近1.7GB的内存,只剩下大约300MB。而这似乎正在慢慢恶化。

我已经让该实例运行了大约3天,并且在新推出并启动单个Docker容器后,可用内存从大约400MB开始。

这是我应该担心的吗?或者当我在容器中的小Go应用程序仅使用10MB时,CoreOS应该使用如此多的内存。

1 个答案:

答案 0 :(得分:2)

因为很多内存使用都是缓冲区和缓存。更好的指标是来自Docker的应用程序(如果它是一个小型Go应用程序可能会关闭)和操作系统总使用率minux缓冲区和第二行缓存(更接近400 MB)。

请参阅link以获得不错的解释。