AWS Высокое использование памяти. Как определить причину?

Вопрос или проблема

Я использую Amazon EC2 instance t2.small. И использование памяти постоянно увеличивается до > 90%.

Использование памяти > 90 %

$ free -m
             total       used       free     shared    buffers     cached
Mem:          1993       1925         68          0          1         24
+ buffers/cache:       1899         94
Swap:         2047        994       1053

Это использование памяти в моей системе:

$ps aux --sort=-resident|head -11

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
webapp    8640  9.4 81.1 3223112 1657264 ?     Sl   Oct24  28:00 puma: cluster worker 0: 9938 [current]
root      9862  0.1  6.7 1057364 137712 ?      Sl   Oct23   2:50 sidekiq 4.2.10 current [0 of 5 busy]
healthd   2784  0.0  0.9 684904 19360 ?        Ssl  Oct18   4:25 puma 2.11.1 (tcp://127.0.0.1:22221) [healthd]
root      4057  0.3  0.6 536908 12652 ?        Ssl  Oct18  29:52 /usr/bin/python2.7 /opt/aws/bin/cfn-hup
nginx     9905  2.6  0.4 156088  9748 ?        S    Oct23  67:02 nginx: worker process
webapp    9938  0.0  0.1 121660  3800 ?        Ssl  Oct23   0:05 puma 3.1.0 (unix:///var/run/puma/my_app.sock) [current] 
ec2-user 21670  0.0  0.1 117372  2544 pts/0    R+   02:39   0:00 ps aux --sort=-resident
root      2309  0.0  0.1 276100  2140 ?        Ssl  Oct18   0:10 /usr/bin/amazon-ssm-agent 
ec2-user 15697  0.0  0.1 115488  2124 pts/0    Ss   00:27   0:00 -bash
root         1  0.0  0.0  19692  1800 ?        Ss   Oct18   0:01 /sbin/init

Я не могу понять, почему использование памяти webapp такое высокое, и оно постоянно увеличивается. Поэтому сейчас мы настроили задачу перезагружать экземпляр раз в час. Есть ли способ выяснить, что вызывает высокое использование памяти у моего webapp? Большое спасибо.

Здесь есть некоторое обсуждение, указывающее на то, что это может быть утечка памяти, потенциально из-за версии ruby:

https://github.com/puma/puma/issues/342

Ответ или решение

Определение причины высокой загрузки памяти на AWS EC2

Вы используете экземпляр Amazon EC2 типа t2.small, и вы сталкиваетесь с проблемой постоянно растущего использования памяти, которая достигает более 90%. Такая ситуация может вызывать беспокойство, так как может приводить к нестабильности системы и ухудшению производительности приложения. Рассмотрим шаги, которые помогут определить и решить причину высокой нагрузки на память.

Факт: Анализ показателей использования памяти

На вашем экземпляре используется около 1925 МБ из доступных 1993 МБ, а также используется 994 МБ из 2047 МБ подкачки, что действительно указывает на значительные требования к памяти.

F — Focus: фокус на главной задаче

Наша основная задача — диагностировать причины высокой загрузки памяти. Основной подозреваемый — сервис webapp, который использует около 81.1% памяти (резидентный размер 1657264 кБ).

O — Originality: оценка уникальности ситуации

Ситуация уникальна именно для вашего приложения и окружения. Поскольку webapp использует Puma, возможно, вы сталкиваетесь с проблемой утечки памяти. Ваша версия Puma и Ruby может содержать известные проблемы, ведущие к этому.

R — Relevance: актуальность принятой меры

  1. Профилирование памяти: Используйте инструменты профилирования для анализа использования памяти вашим приложением, такими как stackprof или похожие на него, чтобы точно определить, какие части кода вызывают рост потребления памяти.

  2. Обновление Puma и Ruby: Проверьте и обновите версии Puma и Ruby до последних стабильных. Проблема утечки может быть исправлена в более новых версиях.

  3. Мониторинг и логирование: Включите детальный мониторинг с использованием AWS CloudWatch для наблюдения за тенденциями использования памяти. Это поможет выяснить, растёт ли потребление постепенно или скачками.

E — Emotion: создание вовлеченности через постепенный контроль

Избегайте частых перезапусков серверов. Вместо этого, выявляйте системные ресурсы, которые подвержены нагрузке, и делитесь находками со своей командой. Это будет способствовать общему улучшению стабильности приложения без необходимости крайней меры в каждочасовом перезапуске.

S — SEO: поисковая оптимизация

Ключевые слова: высокая загрузка памяти AWS, утечка памяти Puma, профилирование памяти Ruby, оптимизация EC2, AWS CloudWatch мониторинг.

T — Testimonial: закольцовка с тестированием

Внедрив перечисленные шаги, вы сможете не только диагностировать проблему, но и предпринять действия для её устранения. Оптимизируйте свой код и использование ресурсов, чтобы достичь повышенной стабильности и производительности вашего экземпляра EC2. Не забывайте документировать и тестировать изменения для их эффективного внедрения.

Не бойтесь экспериментировать с настройками и обновлениями — это залог успешной работы с облачными сервисами.

Оцените материал
Добавить комментарий

Капча загружается...