2009-03-23 15 views
4

私は非常に大きなJavaアプリケーションを持っています。これはTomcat上で動作し、典型的なSpring/Hibernate Webアプリケーションです。これはまた、非常に大きなJavaプログラムです。これらを別々に実行できるので、データベースクエリのパフォーマンスをテストするのは簡単ですが、このようなスタック上でJavaのボトルネックを探すことはできません。私はEclipseのTPTPプロファイラを試しましたが、実際に私のプログラムが気に入らないようでしたが、私のプログラムが大きすぎると思われます。誰も大規模なwebappのプロファイリングに関するアドバイスを持っていますか?非常に大きなJava Webアプリケーションをプロファイルするにはどうすればよいですか?

答えて

4

現在、JDKに付属のプロファイラは、実行中のプロセスにアタッチすることができ、少なくともパフォーマンスの初期概要を提供することができます。これは、Netbeansプロファイラに基づいています。

+0

Visual VMはSun JVMで最も効果的です。元のAskerが別のJVMマジックを使用する場合は、Visual VMが実行中のプロセスを見て接続できるようにする必要があります。 –

1

NetbeansでTomcatとアプリケーションを実行することができます。

次に、あなたは、NetBeansでTomcat上で...

Wikipageをビルトインprofilerなど試験性能、メモリ使用量、にはNetbeansを使用することができます。

0

私はこれを行う簡単な方法を見つけたことはありません。なぜなら、一般的にそれほど多くのことが起こっているため、全体像がはっきりしないからです。 Hibernateのようなものでは、たとえあなたのアプリケーションが実際に何かをしていないとしても、キャッシュされたデータのメモリを大量に取得することが正しい動作である可能性があるため、実行する別のメモリ非効率なプロセスがプロファイリングに陥る可能性があります。

メモリ、速度、または一般的に性能の低いものをプロファイリングしていますか?孤立していると思われるプロセスをテストしてみてください。確かにずっと簡単です。

JProbe、JProfiler、両方とも、無料のデモがあります。 IDEの中でテストすることはメモリの問題を複雑にし、私は気にしないほうが簡単だとわかりました。

+0

私たちのアプリケーションは、許容できるパフォーマンスのパラメータ内で動作していますが、私が対象とする明らかなボトルネックがないかどうかを見てみたいと思います。私はそれがあなたがそれが期待される場所ではないと聞いています。 –

0

Try this.予想よりも簡単かもしれませんが、機能します。

0

Try JProfilerそれは試用ライセンスを持っており、それは非常にフル機能です。

  • があなたのjavaコマンド
  • スタートサーバー
  • スタートJProfilerを上のプログラムに引数としてJProfilerをエージェントを追加し、選択し、「アプリケーションの実行への接続を:にそれを使用するには、必要がありますリモートで」
  • はそれをポート番号を与え、どんなホスト、それは

で実行されているこれらのすべては、JProfilerを付属の説明書であるが、重要な部分は、あなたがyにホストとポートを介して接続しますということです私たちの実行アプリ。

何をプロファイルすれば、大量のデータセットを読み込んだり、ソートしたり、間違っていると単純なネットワークI/Oでさえも、メモリ/ CPUを集中的に使用することができます。これらのことを実行します(サーバ上で動作するスクリプトを使用して負荷テストを自動化し、JProfilerでスナップショットを収集することができれば嬉しいです)。

あなたの余暇でグラフを表示します。 CPU監視をオンにして、CPUサイクルの使用場所を監視します。各メソッド呼び出しでパーセンテージで絞り込むことができるため、ソースを持つメソッドで1〜2%のCPUを使用している場合は、調査を行い、CPU集約度を下げることができるかどうかを確認してください。

同じことがメモリになります。すべてのCPUプロファイリングを無効にし、すべてのメモリプロファイリングを有効にし、テストを再度実行してスナップショットを取得します。

リンス、繰り返し。

また、メモリ管理とガーベッジコレクションについて読むときにこの時間がかかる場合もあります。あなたが既にプロファイリングしているときよりもガベージコレクションをチューニングするのに良い時期はありません。http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html

eden/survivorオブジェクトプロモーションの部分に特に注意してください。 Webアプリケーションでは、短命のオブジェクトがたくさんあるので、若い世代を増やすことは、しばしば年を取っている世代を犠牲にして行います。

1

私はYourKitを使用して8 GBのヒープを持つアプリケーションをプロファイリングしました。

1

チェックJAMon。これはプロファイラーではありませんが、推奨できるプロファイリングのための最良のツールです。バネとの統合は非常に簡単です。私たちはテスト環境とライブ環境でそれを使用します。

関連する問題