CoreOS单容器高内存使用率
所以我有一个简单的Go Web应用程序,我部署为一个Docker容器。 我正在使用t2.small
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开始。
这是我应该担心的吗? 或者说,CoreOS应该使用如此多的内存,当我的一个容器中的小应用程序只使用微小的10MB。
因为很多内存使用是缓冲区和caching。 更好的指标是来自Docker的应用程序(如果它是一个小型的Go应用程序,它可能会很近)以及第二行(接近400 MB使用)的操作系统总使用率minux缓冲区和caching。
请参阅https://unix.stackexchange.com/a/152301/6515一个体面的解释。