使用率や詳細を見る
Datadog 期間は1ヶ月 増えては解放されないまま80%台になっている
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でメモリ使用率順 メモリ占有しているプロセスが見当たらない
原因が見つかった
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
恒久対応 →検討中
・Laravelのスケジューラー設定を見直す。
->everyFiveMinutes()->withoutOverlapping();
・定期的に再起動する運用は微妙
週1で古いバッチ関連のプロセスを削除するジョブを作れないか。
一括削除は有効なバッチ実行が止まってしまうのでNG
基本的にノーメンテで済む形を今度目指します。