2009-07-29 9 views
1

JRE 1.4.2_12で動作するJavaアプリケーションは、毎晩深夜にぶら下がっています。私は、JVMに問題があるかアプリの外部にあるかを知るために、できるだけ多くのプロファイリング情報を記録してみたいと思っています。Java 1.4アプリケーションのプロファイリング情報を収集する方法は?

できるだけ多くの情報を収集するためにHPROFを使用したいと思います。

  1. JVMの終了時ではなく、毎分HPROFのCPUサンプルとメモリ割り当てレポートをダンプする方法はありますか?
  2. このような情報を収集する、より適切なプロファイラがありますか?

答えて

1

ダンプファイルに頼るのではなく、プロファイラーをVMに接続し、ハングアップが発生するまで接続しておきます。次に、プロファイラを使用してスレッドの状態を調べます。

Java 1.4の使用は、1.4のデバッグインタフェースはあまり良くありませんが、まだいくつかのプロファイラがそれをサポートしているため、ここでのマイナーな問題です。私は特にYourKitをお勧めします。商用ですが、評価ライセンスを提供しています。それは私が使用した最高のプロファイラですが、いくらかのマージンです。

+0

あなたはデバッガを意味しますか? –

+0

YourKitは素晴らしいプロファイラーです。私たちはそれを大成功に使用しました。バグを再現する方法(サーバーの時刻を深夜に設定するなど)を把握できる場合は、Eclipseでリモートデバッグセッションを試行することもできます。 – aperkins

+0

@Thorbjørn:デバッガ、プロファイラ、ジャガイモ、トマトなど...ここで重複します。ただし、実行中のコードがわからなくても、プロファイラはスレッドの状態に関するデータをより多く提供します。 – skaffman

0

私はまず実際にあなたのアプリかどうかを判断しようとします。

ボックスに他のアプリがありますか?その場合、深夜0時頃にバッチが実行されます。それは、あなたのアプリケーションがボックス上で動作している他のものや帯域幅を噛んでいるためにリソースが不足しているという状況になる可能性があります。

これはいつものケースだったのでしょうか、それとも最近になったのですか?これが新しい場合は、あなた自身のアプリだけでなく、全体としてボックス上で変更されたものを見てください。

+0

この側面に取り組んでいるいくつかの他の人がいます。顧客サイトにあるので、特定の日に診断するのに時間がかからないため、できるだけ多くの情報を一度に収集しようとしています。 – magneticMonster

1

まず最初に、アプリケーションがハングアップしたときにスレッドダンプを分析しましたか?ぶら下がっているJavaアプリケーションのトラブルシューティングに十分な情報を持っている多くの時間...

Ctrl-Break Windowsではプロセスウィンドウ、Linuxではkill -QUIT [pid]です。

+0

Ctrl-Break信号を60秒ごとに自動的に送信する方法を提案できますか?この方法で私は毎晩午前2時までそれをテストする必要はありません。 – magneticMonster

+0

ちょうど1時間ほどループするスクリプトを実行するようにジョブを設定しますか? – ShabbyDoo

+0

しかし、WindowsプロセスにCtrl-Breakをどのように送信しますか? – magneticMonster

関連する問題