AWS EC2 インスタンスが NodeJs アプリケーションの実行中にメモリ不足になり、ログ抑制のため根本原因を特定できない

AWS EC2 インスタンスが NodeJs アプリケーションの実行中にメモリ不足になり、ログ抑制のため根本原因を特定できない

タイトルに述べたように、AWS 上の EC2 インスタンスで NodeJS アプリケーションが実行されていますが、ときどきメモリ不足になり、プロセスが強制終了されます。

ビジネス的には、冗長システムによって別のインスタンスが起動し、ロード バランサーを通じて利用可能になるため、これは実際には障害にはなりません。しかし、インスタンスのメモリ不足の原因を突き止めて、それを完全に防ぎたいと考えています。

何が起こっているのか調べるために、プロセスの強制終了に関連するログを確認しましたが、メモリが利用できないため、その間 OS はログを書き込むことができないようです。プロセスを強制終了した後、いくつかのログを抑制したことがログに記録され、その後は通常どおり続行されます。したがって、ログ抑制によって、問題の実際の原因に関する詳細情報を取得できないと想定されます。

すでにログ抑制をオフにしようとしましたが、抑制したログの数が報告されないことを除いて、プロセスが応答していない間は何もログに記録されません。

プロセスがメモリ不足になる原因を突き止める方法はありますか?

答え1

プロセスを強制終了します。

初め必要なことは、メモリ不足を防ぐことです。ホストのオーバーコミットを減らしてください。

/etc/sysctl.d に次の内容を含む新しいファイルを追加します (初期設定):

vm.overcommit_memory = 2
vm.overcommit_ratio = 15

次に実行しますsudo sysctl -p (後で比率を調整することもできます)。

次に、大量のメモリを消費しているものを探し始めます。

関連情報