8

そこで何が起こっているのかを確認するために、本番環境の JVM に対してVisualVMを実行することを検討しています。なんらかの理由で CPU を過剰に消費し始めました。

JVM の障害が発生してはならないので、すべてのリスクを見積もろうとしています。

JVM をダウンさせる可能性のあるサイトで見られる唯一の問題は、クラス共有と-XshareJVM オプションに関連するものですが、サーバー モードや x64 システムではクラス共有が有効になっていません。

そうでない場合、本番環境の JVM に対して VisualVM を実行することは本当に安全ですか? 考慮すべきリスクは何か、JVM に対して VisualVM を実行する (およびそれを使用してプロファイリングする) 負荷 (CPU/メモリ) はどれくらいですか? ?

ありがとう

4

2 に答える 2

6

AFAIK VisualVM は本番環境で使用できますが、負荷の軽いサーバーでのみ使用します。あなたができることは、サービスが遅くなるのを待ち、後であまり使用されなくなったときに、いくつかのコレクションが驚くほど大きいかどうかをテストすることです. または、ヒープ ダンプをトリガーしてオフラインで分析することもできます。

また、かなりのオーバーヘッドがなければ、メソッド呼び出しに関する統計を取得することはできません。Java 6 および 7 は Java 5 よりも優れていますが、商用プロファイラーを使用してもアプリケーションが 30% 遅くなる可能性があります。

于 2012-06-28T07:17:35.500 に答える
2

実際、スタック ダンプを使用すると、多くのオーバーヘッドなしでいくつかの情報を取得できます。https://gist.github.com/851961には、これを行うのに役立つスクリプトもあります。

このタイプのプロファイリングは、最も侵入的ではありません。

于 2012-07-20T09:05:16.250 に答える