CoreOS 单容器高内存占用
CoreOS Single Container High Memory Usage
所以我有一个部署为 Docker 容器的简单 Go Web 应用程序。我是 运行 AWS 上带有 CoreOS AMI 的 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 是否应该使用这么多内存。
因为很多内存使用是缓冲区和缓存。更好的指标是来自 Docker 的应用程序(如果它是一个小型 Go 应用程序,它可能接近)和第二行的 OS 总使用 minux 缓冲区和缓存(接近 400 MB 使用).
请参阅 https://unix.stackexchange.com/a/152301/6515 以获得合理的解释。
所以我有一个部署为 Docker 容器的简单 Go Web 应用程序。我是 运行 AWS 上带有 CoreOS AMI 的 t2.small
实例。
容器很小,根据docker stat
:
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 是否应该使用这么多内存。
因为很多内存使用是缓冲区和缓存。更好的指标是来自 Docker 的应用程序(如果它是一个小型 Go 应用程序,它可能接近)和第二行的 OS 总使用 minux 缓冲区和缓存(接近 400 MB 使用).
请参阅 https://unix.stackexchange.com/a/152301/6515 以获得合理的解释。