Red Hat Enterprise Linux Serverバージョン6.7を実行しているサーバーがあります。サーバーは、nginx Webサーバーを持つTomcatサーバーを含む多くのJavaプロセスを実行します。サーバーには 12 GB の RAM が割り当てられます。
起動直後、サーバーは1289 MBのRAM(アイドル-m - / +バッファ/キャッシュライン)を使用していることを示しています。出力は以下の通りです。
サーバーの起動時に「ps aux」は、すべてのプロセスのメモリ使用量を合計1,290,996kのメモリ(RSS列)として表示します。これら2つの数字は非常に近いです。
2日の稼働時間後、free -mは現在10,698MBのメモリを使用しており、すべてのプロセスの「ps aux」はなんと8,345,352kを使用していることを示しています。
すべてのプロセスを1つずつ停止/終了しようとしましたが、最小限の操作しか実行していません(Tomcat、Java、Nginxなし)、〜2 GBの「失われた」メモリを回復できませんでした。失われたメモリを回復するには、サーバーを再起動する必要があることがわかりました。サーバーが3〜4日以上再起動しない場合は、スワップスペースを使い始め、最終的にCPU使用率が高くなり、サーバーで実行されているJavaアプリケーションがクラッシュします。
また、サーバーがVMWareを使用して仮想マシンとして実行されていることにも言及したいと思います。
起動時に-m出力を解放します。
total used free shared buffers cached
Mem: 11852 1787 10064 0 28 468
-/+ buffers/cache: 1289 10562
Swap: 8191 0 8191
通常動作の2日後 -m 出力解除
total used free shared buffers cached
Mem: 11852 11625 226 0 146 779
-/+ buffers/cache: 10698 1153
Swap: 8191 43 8148
「欠けている」メモリがどこにあるかを診断して問題を解決するにはどうすればよいですか?どんな提案にも感謝します。
ありがとうございます!