2016-03-22 11 views
1

私はUbuntuサーバー上でバックグラウンドで実行しているjarを持っています。ある瞬間においてJavaプロセスが実行状態にあり、CPUを消費する

、アプリケーションは、あまりにも多くのCPU(400%)をconsumming開始及びR状態の4子プロセスステー:

HTOP state before/after problem

NB:問題は、量ではなく生成されています使用すると、一定の時間(3-4日)の直後に発生します。私たちはjavaをkillして再実行する必要があります。

EDITは、GCログを追加:

私は、Javaをした-verbose:gcをこことは、私はアプリを再起動したときに、アプリケーションが、問題は、先に説明を示し間で得たものです。

EDITがOLD GENログを追加する:GCが行われたときに、ログにタイムスタンプを与えなかったので、最初のグラフで

、x軸は、秒ではありません。また、下部のScreenShotでは、問題が発生している期間にVisual VMでVisual GCが実行されました。

Graph Line for the GC

ここでは、ログ・ダンプされます。

http://www.filedropper.com/threaddump2

+0

私たちに多くの情報を提供してください、あなたはいくつかのログを持っていますか? – HCarrasko

+0

@Hectorどのようなログを私のアプリに追加すれば役に立つのか分かりません! – EspritBat

答えて

2

考えられる原因の1つは、(これは私たちが上に行くためにすべての情報を持っていないので、純粋な憶測です)Javaプロセスがあるということですメモリが不足し、CPU集約型の完全なガベージコレクションが開始されます。 ロギングを有効にしてOutOfMemoryエラーが発生したかどうかを判断し、そうであれば、gcロギングを有効にしてメモリリークの原因を特定します。

グラフを見た後、x軸が秒より大きい場合は、リソースリークがあると言います。あなたが終わりの段階でより高い解像度で終身世代の行動を投稿できるならば、興味深いでしょう。

[OK]を、私は少し驚いている新しいグラフを見て。最初のグラフの動作を新しいグラフで調整することはできません。メモリの問題はまったくないようです。古い世代は若い世代のように基本的に空いています。アプリケーションのログはありますか?

新しいグラフは、アプリがめちゃくちゃになったとき、あなたは、スレッドダンプをやって検討するかもしれない、それ以上の意味のある情報を与えることはありません。使用するjstack <pid> >> thread_dump.log

+0

あなたはどのようなログについて話していますか? – EspritBat

+0

通常、アプリケーションログがありますか?あなたはserver.logなど何も持っていませんか? std.errで何も得られないのですか? – Erik

+0

私は自分のアプリケーションログを作成し、 'system.out.println'を別のログファイルにリダイレクトします。しかし、エラーや例外はありません。 – EspritBat

関連する問題