2017-09-13 6 views
0

私は現在作業中で、現在ステージング環境にあるエンタープライズアプリケーションを持っています。サーバーには24 GBのRAMがあります。しかし、平均15〜20日後にサーバーがダウンし、サーバーログのメモリ不足エラーが発生します。私はJ2EE、Spring、Hibernate、Memcache、ehcache、mysql、tomcat8を使用しています。 私はクラスタリングのためにnginxを使いましたが、Tomcatサーバーの3つのノードがあります。1か月に2回、スペース・エラーが発生しました。 Java

このエラーが発生している場所と、このメモリリークが発生している場所をトレースすることはできません。

おかげ

+1

詳細にそれを知らなくても、あなたのアプリケーションで何が起こって何ができるかについて知るための明確な方法はありません。ヒープダンプを取得して分析する必要があります。 – Swapnil

+0

入力いただきありがとうございます。私はダンプを取得して分析し、すぐにあなたに連絡します。 – Rana

答えて

0

Matと呼ばれる日食のツールを使用して、それを分析し、how-to-collect-a-heap-dumpを使用して、ヒープ・ダンプを取ります。これはあなたの記憶の明確なカット画像を与え、OOMエラーの原因となっているコードで何がうまくいかないのかを知らせます。

+0

入力いただきありがとうございます。私はダンプを取得して分析し、すぐにあなたに連絡します。 – Rana

1

プログラムがヒープ内に多くのオブジェクトを割り当てており、ガベージコレクタがそれらを解放できないことがあります。

あなたがあなたのサービスのヒープ・ダンプを行うことができます診断するには、これはコマンドで実行されます。

<pid>は(あなたがコマンド ps faux | grep javaを見つけることができます)あなたのJavaサービスのプロセスIDです
jmap -dump:format=b,file=dump.bin <pid> 

VisualVMを使用してファイルdump.binを開いて、どのオブジェクトがヒープのほとんどを使用しているかを調べることができます。

ヒープダンプが大きく、ガベージコレクションの準備ができているオブジェクトが含まれているため、jmapにガベージコレクションできないオブジェクトのみをヒープダンプに入れるように指示したい場合があります。 jmapコマンドにフラグlive

jmap -dump:live,format=b,file=dump.bin <pid> 

ここでは、ヒープ・ダンプを検査するVisualVMのを使用するための命令です:https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/heapdump.html

+0

入力いただきありがとうございます。私はダンプを取得して分析し、すぐにあなたに連絡します。 – Rana

関連する問題