2016-01-26 4 views
1

Итак, у меня есть простое веб-приложение Go Go, которое я развернул в качестве контейнера Docker. Я запускаю экземпляр t2.small на AWS с CoreOS AMI.CoreOS Single Container High Memory Usage

Контейнер очень мало, используя только около 10 МБ памяти в соответствии с 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 

Как вы можете см., что он использует почти 1,7 ГБ памяти его общей памяти объемом 2 ГБ, оставив только около 300 МБ. И это постепенно ухудшается.

У меня был экземпляр, работающий около 3 дней, и свободная память начиналась со скоростью около 400 МБ после нового запуска и запуска одного контейнера Docker.

О чем я должен беспокоиться? Или CoreOS должен использовать так много памяти, когда мое небольшое приложение Go в контейнере использует только 10 МБ.

ответ

2

Потому что большая часть использования этой памяти - буферы и кеш. Лучшим индикатором является ваше приложение от Docker (которое, скорее всего, близко, если оно небольшое приложение Go), а также общие буферы использования minux для ОС и кеш на второй строке (что ближе к 400 МБ).

См. https://unix.stackexchange.com/a/152301/6515 для достойного объяснения.

Смежные вопросы