12GBの物理メモリ(RAM)割り当てを使用してLinuxサーバー上で実行されているJavaアプリケーションがあり、次のように時間の経過とともに通常の使用率が表示されます。
sys> free -h
total used free shared buff/cache available
Mem: 11G 7.8G 1.6G 9.0M 2.2G 3.5G
Swap: 0B 0B 0B
最近のアプリケーションの負荷を増やすと、RAMの使用率がいっぱいになり、空き容量がほとんどなく、少しの速度低下が発生する可能性がありますが、アプリケーションはまだうまく機能していることがわかります。
sys> free -h
total used free shared buff/cache available
Mem: 11G 11G 134M 17M 411M 240M
Swap: 0B 0B 0B
sys> free -h
total used free shared buff/cache available
Mem: 11G 11G 145M 25M 373M 204M
Swap: 0B 0B 0B
私は言及しましたhttps://www.linuxatemyram.com/以下が提案されます。
警告表示調査する必要がある物理メモリ不足の状況:
- 利用可能なメモリ(または「利用可能+バッファ/キャッシュ」)がゼロに近い。
- 使用されるスワップが増加または変動します。
- dmesg | grep oom-killerはOutOfMemory-killerの動作状態を表示します。
上記を参照すると、アプリケーションレベルではOOMの問題は表示されず、スワップも無効になっています。したがって、これら2つは無視されます。私を悩ませるのは、使用可能なメモリがゼロより小さいということです。明確にする必要があります。
質問:
availableが0に近い場合、システムクラッシュは発生しますか?
使用可能なメモリが少なくなったら、RAMをアップグレードする必要がありますか?
RAMメモリはどの基準で割り当て/増加する必要がありますか?
RAMメモリ割り当てのために従うべき公式の推奨事項/ガイドラインはありますか?
答え1
availableが0に近い場合、システムクラッシュは発生しますか?
広く使用されている最新のオペレーティングシステムはこの状況を処理する可能性があるため、システムが遅すぎて実際に使用できなくてもシステムが正常にクラッシュすることはありません。
使用可能なメモリが少なくなったら、RAMをアップグレードする必要がありますか?
使用可能なRAMが実際に低すぎるため、プロセスがRAMから削除される可能性があります。おそらくメモリを追加する必要があります。
RAMメモリはどの基準で割り当て/増加する必要がありますか?
パフォーマンスが影響を受けた場合(つまり、過度のスワップ使用量によってディスクスラッシングが発生した場合)、ジョブを完了するために必要なRAMが不足しているため、ジョブを完了できない場合です。
RAMメモリ割り当てのために従うべき公式の推奨事項/ガイドラインはありますか?
私が知る限り、いいえ。人ごとにRAMの要件が異なります。 2021年の最新のオペレーティングシステム、デスクトップ環境、Webブラウザについて話している場合、4 GBのRAMは絶対に最小ですが、8 GB未満のRAMを使用することはお勧めできません。最終的に、これはワークフローによって異なり、誰も知りません。一部の分野では、人々はすでに128 GBのRAMを備えたワークステーション(ビデオと画像の編集、3Dレンダリング、数学/化学/物理/エンジニアリングコンピューティング、人工知能)を持っています。
答え2
availableが0に近い場合、システムクラッシュは発生しますか?
私のサーバーの1つでテストすると、次のようにロードされたメモリがほとんどいっぱいになりました。
sys> free -h
total used free shared buff/cache available
Mem: 11G 11G 135M 25M 187M 45M
Swap: 0B 0B 0B
私のアプリだけが(より多くのメモリ消費)終了するのを見ることができます。メモリ不足キラーカーネルログから参照可能
dmesg -e
[355623.918401] [21805] 553000 21805 69 21 2 0 0 rm
[355623.921381] Out of memory: Kill process 11465 (java) score 205 or sacrifice child
[355623.925379] Killed process 11465 (java), UID 553000, total-vm:6372028kB, anon-rss:2485580kB, file-rss:0kB, shmem-rss:0kB
https://www.kernel.org/doc/gorman/html/understand/understand016.html
Out Of Memory Killer または OOM Killer は、システムのメモリが大幅に不足している場合に Linux カーネルが使用するプロセスです。これは、Linux カーネルがプロセスにメモリをあまりにも多く割り当てるために発生します。 ...これは、実行中のプロセスに物理的に使用可能なメモリよりも多くのメモリが必要であることを意味します。