LoginSignup
0
0

More than 1 year has passed since last update.

EC2のメモリ空き容量が減る場合の対処法

Posted at

困っている事

  • 本番に公開しているAWSが、3日おきぐらいに再起動する
  • なぜ本番が3日おきに再起動するのか分からない

環境

  • auto scaling使用
  • ロードバランサ使用
  • rails(6.1)
  • 起動はpuma
  • EC2プラン: t2.micro

前提情報

  • ログに、OOMキラーが作動したという記述あり。その後EC2インスタンスが落ちている
  • /etc/sysctl.confで、OOMキラーが作動した時に、EC2インスタンスが再起動するように設定している
  • EC2インスタンスが再起動したタイミングでnginxとpumaが起動するcrontabを設定している
  • EC2インスタンスは再起動するとメモリがリセットされる
  • 約3日後にOOMキラーが作動する、の繰り返し
  • サイトは1日に5000人ほどのuserが登録するというアプリ

予想

  • メモリリーク
  • メモリブロート(メモリ断片化)
  • のどちらかではないか

検証

  • メモリリークの特徴: メモリ消費量が徐々に線形に増加
  • メモリ断片化の特徴: メモリ消費量が一定まで増加すると横ばいになっていく

  • まずメモリの消費量推移を監視する必要あり

  • cloud watchでメモリ消費量を監視する設定を行う

gem

  • puma worker killerというgemが有名だが
  • READMEを読む限り使わない方がいいように見えるので使わない

対策

  • 検証の結果、リークか断片化かはっきりとは分からなかった(微妙なグラフ)
  • プランがt2.microなのでメモリが少なすぎるのでは
  • t3.smallにした所、それ以後は一度も再起動しなくなったので、断片化が原因だったのではないか

その他

  • よく使ったコマンド $ free -m(メモリ使用量が分かる)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0