メモリリークトラッキング

メモリリークトラッキング

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 

「欠けている」メモリがどこにあるかを診断して問題を解決するにはどうすればよいですか?どんな提案にも感謝します。

ありがとうございます!

関連情報