0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2のメモリ使用率が常に高いときの対策

Posted at

使用率や詳細を見る

Datadog 期間は1ヶ月 増えては解放されないまま80%台になっている
image.png
 
freeコマンド usedが80%程度

$ free
              total        used        free      shared  buff/cache   available
Mem:        3965164     3197448      113704       22128      654012      503072
Swap:             0           0           0

 
topコマンド→shift+mでメモリ使用率順 メモリ占有しているプロセスが見当たらない
image.png

原因が見つかった

psコマンド

ps aux --sort -rss

これにメモリを10MB以上使っている条件を追加

ps aux --sort=-rss | awk '$6 > 10000'

ps: 現在のプロセス情報を表示
aux: 全てのプロセス(a: 全ユーザー, u: ユーザーフォーマット, x: 制御端末がないプロセスも含む)を表示
--sort -rss: メモリ使用量順(RSS)にソート。-rssで降順にソート、メモリ使用量が多い順に表示

下記のようなバッチ関連のプロセスが大量にあり、合計するとメモリ使用率が85%でした。

artisan command:***
artisan schedule:run

対応

暫定対応
 バッチサーバーの再起動またはプロセスの終了

プロセスを終了する。
一括で終了してもクーロンで1分ごとに実行されるので、大丈夫そうではある。

sudo pkill -f "artisan schedule:run"

ただ、今回はプロセスIDを全部指定してkillした。
指定が大変なのでChatGPTにコマンドは作ってもらった。

sudo kill プロセスID...

freeコマンドとDatadogで確認、20%台まで減った。OK

$ free
              total        used        free      shared  buff/cache   available
Mem:        3965164      671300     2664968       22236      628896     3031816
Swap:             0           0           0

image.png

 
恒久対応 →検討中
・Laravelのスケジューラー設定を見直す。

->everyFiveMinutes()->withoutOverlapping();

・定期的に再起動する運用は微妙
 週1で古いバッチ関連のプロセスを削除するジョブを作れないか。
 一括削除は有効なバッチ実行が止まってしまうのでNG

基本的にノーメンテで済む形を今度目指します。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?