2017-08-30 23 views
3

私は、Java Visual VMでプロダクション環境をプロファイルすることを検討しています。私はmontitorたい:Java Visual VMは、監視対象のJVMのパフォーマンスに影響しますか?

  • CPU使用率
  • GC活性
  • ヒープ使用し
  • スレッド

のステータスは、このモニタリングは、JVMのパフォーマンスに重大な影響を持っていますか?

+0

おそらくそうではありません。なぜあなたはそれを試してみませんか? – XtremeBaumer

+3

この質問は広すぎます。現在の形では、答えは「はい、あります」です。 –

答えて

3

私の経験では、プロファイラを使用していない限り、顕著な減速はありません。プロファイラモードでは、パフォーマンスへの影響が顕著であるかどうかにかかわらず、フィルタの問題です。サンプラーははるかに安全な選択肢ですが、どちらかを有効にすると短時間でシステムを使用できなくなるホットコード置き換えが発生します(その1つを起動する可能性もあります:JDK7 Application is getting slow after some Uptime)。

もちろん、基本情報(メモリ、cpu-graph、gc、スレッドカウント)を取得したい場合は、その影響はさらに小さくなります。

私は自分の答えをどのように特定していますか?私はJVisualVM、JProfiler、YourKitをほぼ10年間使ってきました。私たちは、パフォーマンスバグを分析するために、お客様の製品コード(通常のWebアプリケーション)のサンプル/モニタリングモード(jvisualVMと基本的に同じです)を使用しています。それには目立った影響はなかった。

しかし、基本的なシステムモニタリングだけが必要な場合は、Javaメロディ(https://github.com/javamelody/javamelody/wiki)またはキーカー(http://kieker-monitoring.net/)のように考えるのに適した製品があります。

0

実際のパフォーマンスの程度は決定するのが難しいです。

JVMのMXBean経由で一部のGCを監視している場合は、影響が少なく、常に監視していると影響が少ないです。

CPU関連の問題を調査する必要がある場合、サンプリングは、パフォーマンスに与える影響を最小限に抑えながら、ボトルネックを特定するための簡単なメカニズムを提供します。

+0

Thx。私はその質問を明らかにした。 CPU、メモリ、gc、スレッドの簡単な監視についてです。 –

2

はい、JVMのパフォーマンスに影響します。それは多くの要因に依存します。 MBeanの属性にアクセスしたり、操作を呼び出すだけでは、その影響はごくわずかです。しかし、CPU /メモリサンプラまたはプロファイラを起動するとすぐに、影響が大幅に増加します。どのくらい有意義ですか?どれどれ。サンプリングの

パフォーマンスへの影響:

Visual VM Screenshot

接続されたVisualVMの起動時に寝て簡単なプログラム(すべてでは何もしません)へ。したがって、メインスレッドはスリープ状態です。 60秒のCPUサンプラーを起動しました。合計CPU時間のこれらの60秒間の読み取り値は5640ms(5.64秒)です。

これは、暗号化せずにローカルマシンを使用して接続したときです。 SSLを使用して暗号化を追加する場合(運用環境で必須)、影響はさらに大きくなります。

関連する問題