このトピックでは、Linuxインスタンスで Out of memory (OOM)エラーを特定、分析、および解決する方法について説明します。
背景情報
OOM は、システムのメモリが非常に不足している場合に、システムの安定性を確保するためにLinuxカーネルがプロセスメモリを強制的に解放するために使用するメカニズムです。システムのメモリリソースが不足すると、ログに多数のOOMエラーメッセージが表示される場合があります。これにより、システムはプログラムまたはプロセスに十分なメモリ領域を割り当てることができなくなり、プログラムの通常の動作やプロセスのデータの読み取り/書き込み操作に影響します。
原因
Linuxインスタンスでプログラムを実行すると、OOMエラーが頻繁に発生します。これは、次の理由により発生する可能性があります。
実行中のプログラムのメモリ要件を満たすのに十分なリソースがLinuxインスタンスにないため、OOMエラーがトリガーされます。
アプリケーションコードがメモリを不適切に使用しているため、OOMエラーがトリガーされます。
トラブルシューティング手順
OOMエラーのトラブルシューティングを行うには、次の手順を実行します。
OOM関連のログを表示します。
ほとんどの場合、次のコマンドを実行してLinuxシステムログを表示できます。
sudo less /var/log/messages sudo less /var/log/syslogログでキーワード
oomまたはkillを検索して、OOMエラーに関する情報を表示します。 OOMイベントがビジネスアプリケーションによって引き起こされた場合は、ビジネスアプリケーションログを通じてOOMエラーの原因をさらに特定できます。システムの現在のメモリ使用量を確認します。
topまたはfreeコマンドを使用して、Linuxインスタンスのメモリ使用量を確認できます。 詳細については、「Linuxインスタンスのメモリ使用量が多い場合の対処方法」をご参照ください。CloudMonitor を使用して、ホストのメモリメトリックを表示することもできます。 詳細については、「オペレーティングシステムの監視」をご参照ください。
提案
トラブルシューティングの結果に基づいて、対応するソリューションを選択できます。
原因 | 提案 |
実行中のプログラムのメモリ要件を満たすのに十分なリソースが Linux インスタンスにありません。 | インスタンスのメモリ構成をアップグレードします。 警告 サブスクリプションインスタンスのインスタンスタイプを変更する場合、インスタンスを再起動する必要があります。ビジネスへの影響を最小限に抑えるために、オフピーク時に操作を実行することをお勧めします。 |
アプリケーションコードがメモリを不適切に使用しています。 | バッチクエリリクエストのページングの実装など、アプリケーションコードを最適化します。 |
参照
atopツールを使用して Linux システムメトリックを監視する方法については、「atop ツールを使用して Linux メトリックを監視する」をご参照ください。インスタンスの負荷が高い問題の処理方法については、「ECS インスタンスの高負荷の問題」をご参照ください。