2008-09-16 7 views
4

新しいJava 1.6 JDKツールVisualVMを使用して本番アプリケーションをプロファイルした人と、プロファイル作成中にアプリケーションがどのように機能するのですか?Java 1.6 JDKツールVisualVM

ドキュメンテーションは、プロダクションと開発の両方で使用するように設計されていますが、以前のプロファイリング経験や他のプロファイリングツールに基づいていると私は躊躇しています。

答えて

5

私は個人的にVisualVMを使っていませんが、今日はblog postが役に立つ情報があるかもしれません。彼はそれを使ってプロダクションアプリのプロファイリングについて語っている。

1

デベロッパーボックスで試してみましたが、プロファイリングを無効にすると、予期せずTomcatがシャットダウンすることがありました。私はこれを生産に転嫁することに非常に注意しています。代わりにステージング環境で負荷をシミュレートできますか?それは本物のものほど良くはありませんが、間違ってしまうとあなたを解雇することはないでしょう...

0

VisualVMを使って別のコンピュータからサーバーにリモート接続することは可能です。 「リモート」ノードを右クリックして「リモートホストを追加」と言うだけです。

これは、実行中のパフォーマンスに影響を与えるVisualVMオーバーヘッド(存在する場合)を少なくとも排除します。

これは、特にプロダクション環境でのパフォーマンス上の懸念を排除するものではありませんが、少しは役立ちます。

1

私はVisualVMを使ってローカルで実行中のものをプロファイリングしています。大きな勝利は、起動するだけで、実行中のJVMに接続できることです。これまで使用していた他のプロファイリングツールより使いやすく、オーバーヘッドがあまりないようです。

サンプリングしていると思います。 CPU集約型アプリケーションのオーバーヘッドは重要視していませんでした。私は何も測定しなかった(私のアプリがどのように実行されたかに関心があったが、ツールの実行方法には関心がなかった)が、プロファイリングに慣れていた10回の減速の要因は間違いありませんでした。

0

Visual Beansと同じ基盤を使用するNet Beansプロファイラを使用しました。

以前のバージョンのWeblogicを使用していました。これは1.5 JVMを使用しているため、動的に接続できませんでした。私がプロファイリングしていたアプリケーションには数千のクラスがありました。私のワークステーションは、プロファイラがそれらをすべて装備している間はほとんど使用できませんでした。計装が完了すると、システムは低速でしたが、完全に使用できませんでした。減速の量は実際にキャプチャする必要があるものによって異なります。基本的なCPUメトリックはかなり軽量です。メモリ割り当てをプロファイリングすると、処理が遅くなる。

私は本番システムでは使用しません。減速の可能性を除けば、私は最終的にPermGenスペースを使い果たしました。なぜなら、プロファイラは設定を変更するときにクラスを再インストルメントし、再ロードするからです。 (これは1.6エージェントで修正されるかもしれませんが、わかりません)

1

VisualVMをリモートで実行するだけでは、アプリケーションを監視するだけでは速度が低下しません。システムが崩壊の端にない場合、私はまだ何の問題も見ていない。基本的にJVMの粗い組み込み計測器から情報を読み出すだけです。ただし、プロファイリングを開始すると、他のプロファイラーと同じ問題が発生します。基本的には、JVMのサポートを使用して、ほとんどすべて同じ方法で動作します。

多くの人がファイアウォールの問題によりリモートでVisualVMを実行することに問題がありますが、システムプロパティを設定してVisual VM remotely over sshを実行することもできます。

+0

ブログの投稿には、Jstatdを起動するための情報が追加されています。 – hennings

0

私はVisualVMがJDKに含まれる前からたくさん使っています。それはシステムのパフォーマンスに無視できる影響を与えます。私はそれがシステム上のパフォーマンスに問題を引き起こすことに気づいたことはありませんでしたが、もう一度、少し余分な負荷をサポートするのに十分なヘッドルームがありました。あなたのサーバーが完全にタックアウトされ、VisualVMの実行を処理できないレベルで実行されている場合は、別のサーバーを購入する可能性が高いと言います。すべてのプロダクションサーバーにはメモリの余裕があります。それ以外の場合は、ただ待っているだけの災害です。

0

VVM(VavaVoom?)は非常に幅広く使用されていますが、ライトモードの魅力のように機能します。すなわち、プロファイリングがなく、基本データをVMから取得するだけです。しかし、いったんプロファイリングを始めてクラスがたくさんあると、かなりの減速があります。私は純粋にクラスの再読み込みと再定義が厄介で、サーバークラスローダーが別のものであり、1つのサーバー実装から別のものに変わるため、純粋に2テラのメモリを搭載した128コアボードを持っていても、 、生産にそれらを妨害することは非常に良い考えではありません。

関連する問題