Kubernetes Pod сообщает о большем использовании памяти, чем фактическое потребление процесса - PullRequest
0 голосов
/ 24 октября 2018

У меня есть стручок Kubernetes, у которого

  • Запрошенная память 1500 МБ
  • Ограничение памяти 2048 МБ

У меня есть 2 контейнера, работающие внутри этого модуляВо-первых, это реальное приложение (тяжелое Java-приложение) и облегченный поставщик журналов.

Модуль последовательно сообщает об использовании 1,9-2 ГБ памяти.Из-за этого развертывание масштабируется (задается конфигурация автоматического масштабирования, которая масштабирует модули при потреблении памяти> 80%), что, естественно, приводит к увеличению количества модулей и увеличению затрат

Желтая линия представляет использование памяти приложения

enter image description here

Однако, при более глубоком расследовании, это то, что я обнаружил.

На exec внутри контейнера приложения,Я выполнил команду top, и она сообщает, что в общей сложности доступно 16431508 KiB или примерно 16 ГБ памяти, то есть памяти, доступной на компьютере.

В контейнере приложения выполняется 3 процесса, изиз которых корневой процесс (приложение) занимает 5,9% памяти, что примерно равно 0,92 ГБ.

Регистратор просто занимает 6 МБ памяти.

Что я не понимаю, так это ПОЧЕМУ мой модуль постоянно сообщает о таких высоких показателях использования.Я что-то пропустил ?Мы несем значительные расходы из-за непреднамеренного автоматического масштабирования и хотели бы исправить то же самое.

1 Ответ

0 голосов
/ 24 октября 2018

В Linux неиспользуемая память рассматривается как потраченная впустую память, поэтому вся «свободная» ОЗУ, то есть память, не используемая приложением или самим ядром, активно используется для кэширования операций ввода-вывода, метаданных файловой системы и т. Д., Но будет предоставлена ​​вашему приложению, еслитребуется.

Подробную информацию о потреблении памяти вашим контейнером вы можете получить здесь:

/ sys / fs / cgroup / memory / docker / {id} /memory.stat

Если вы хотите масштабировать кластер на основе использования памяти, лучше рассчитывать только размер вашего приложения, а не использование памяти контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...