
私は100 TPS APIトラフィックを管理するLinuxサーバーを維持しています。最初はRAMが8GBしかありませんでした。私たちは最近、メモリを2倍に増やし、JVMのメモリ消費制限も2倍にしました。利用可能なメモリがまだ不足しています。
free -m
total used free shared buff/cache available
Mem: 15885 9909 156 15 5819 5584
Swap: 18431 127 18304
ご覧のとおり、使用可能なメモリは156MBです。キャッシュがクリアされるとfree
メモリが増えます。しかし、数時間経っても、まだ同じレベルに落ちた。これは通常の動作ですか、それともメモリを増やす必要がありますか?
答え1
これは通常の動作です。未使用のメモリは、全体的なパフォーマンスを向上させるためにキャッシュに使用されます。他の目的でメモリが必要な場合、メモリは自動的に解放されます。この特定の動作を確認し、他人に表示する以外にキャッシュを削除する必要はありません。メモリに空き容量があると、ディスクI / Oアクティビティが増加し、アプリケーションが遅くなる可能性があります。
私も信じるJavaより多くの使用可能なメモリがある場合は、当然より多くのメモリを使用することになり、これを防ぐには多くのパラメータが必要です。
これにより、一部のモニタリングツールがメモリ使用量について警告する場合は、実際の使用可能なメモリに関する正しいレポートを提供するようにモニタリングツールを変更する必要があります。を示します)。
ちなみに、157MBのスワップスペースを使用することは、スワップインとスワップアウトをしない限り問題になりません。 (これは次のコマンドで確認できます。)vmstat
)。これは、実際のアクティビティに157MBのメモリを使用できることを意味します。まだ見守るべき部分です。
答え2
Linuxカーネルは、バッファやキャッシュと同じくらい多くのメモリを消費します。これはシステムを高速化し、完全に意図的なものです。実際に探している番号は「利用可能」列にあります。アプリケーションがより多くのメモリを必要とする場合、オペレーティングシステムはアプリケーションが使用できるようにいくつかのキャッシュを取得します。