2012-04-18 3 views
5

サーバーアプリケーションにパフォーマンスの問題(Hi-CPU)があります。しかし、この問題は、サーバーが長時間(平均して1週間)実行されている場合にのみ表示されます。 Netbeansの組み込みプロファイラを使用して問題を診断しようとしましたが、数時間実行しても応答が停止するだけです。長期的なJavaプロファイラまたはパフォーマンスロガーはありますか?

アプリケーションを長期間監視する方法はありますか?ありがとう。

UPDATE:これは、あなたが(あなたが上記のJDK 6アップデート7またはにしている場合)まだ行ってhaventは場合はVisual VMを見てみなければならないWebアプリケーション

答えて

4

ではありません。 NetbeansプロファイラをJavaコアに「適応」して以来、かなり慰めになると確信しています。

0

プロファイリングツールについてはあまりよく分かりませんので、プロファイリングツールはお勧めしません。

代わりに、AspectJを使用してログに(Log4j)文を挿入してください。あなたが監視したいと知っている特定の領域を認識しているならば、それらの特定のポイントカットでログを注入するだけです。それ以外の場合は、すべてを見たい場合は、ポイントカットを一般化して、すべてを注入することができます。

ログを1週間収集し、「不規則に動作する」ものを探します。あなたのような情報を収集するために解析し、いくつかのファイルを使用する必要があるかもしれませんので、これらのログファイルは、おそらく、あなたがログインすることを決定した内容に応じて、かなり長くなります。

  • 特定のメソッド呼び出しの間の各メソッドの呼び出し
  • 時間の#
  • 私はあなたがあなたのアプリケーション

の詳細を知ることに基づいて、他の人の考えることができると確信しては、ときにパフォーマンスダイブものと週の初めから、これらの数字を比較してください。パフォーマンスが大幅に低下している場合は、これらのログファイルにこれらが明白に反映されると思います。

これは、既製のプロファイリングツールを実行するよりも少し面倒かもしれませんが、以前はAspectJをあまり使用していないとかなり柔軟になり、良い学習体験になるかもしれません。

0

CompuwareのDynaTraceと考えられる商用提供があります。 Compuwareのために働いたことはありませんが、私の現在の組織では現在運用環境でDynatraceの使用を検討しています。

実行中のJavaアプリケーションのタイプに応じて、デスクトップベースであろうとサーバーベースであろうと、インストールはクラスパスにjarファイルを追加するだけでなく、ネットワークアプライアンスをネットワークに追加することになります。アプリケーションを実行すると、InstrumentationデータがDynatraceサーバーに送信されます.Dynatraceサーバーでは、取得することができ、使用されているテクノロジに関係なく、システム全体を通じて個々のユーザーのパスとトランザクションをトレースできます。

Dynatraceは、特定の問題を診断したいときだけでなく、いつでも実行していたと思います。また、Dynatraceは安価ではありません。サーバーあたり5桁のコストを見ているかもしれませんが、見たところでは永久に動作するデバッガとほとんど同じように動作しますが、パフォーマンスペナルティはあまりありません(< 5%)。

実行しているアプリケーションの種類は正確にはわかりませんが、私たちはJava EEベースのWebアプリケーションで、バックエンドサーバーの一部に接続しています。

HTH

2

私は、このようなCPU、メモリ、スレッドなどのサンプルメトリックがカウントパフォーマンスロガーツールを書いて、ログのボトルネック

http://www.infoq.com/articles/perf4j

1

を見つけるために、パフォーマンスのロギング用に、過去にperf4jを使用していますそれらはlog4jを使用しています。パフォーマンスログをアプリケーションログと比較することにより、パフォーマンスパターンを簡単に検出してアプリケーションをプロファイルできます。楽しい!

Performance-Logger

関連する問題