JavaのフライトレコーダーのサンプリングにおけるIOバウンドメソッドを含める方法?

アレックスR:

私は、テスト中のJavaプログラムに次のCLIオプションを指定することにより、起動時にJFRを始めています。

-Xmx24g -XX:+UnlockCommercialFeatures -XX:+FlightRecorder 
-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,settings=profile

テストの実行が完了するまでに90秒かかります。

JavaのミッションコントロールにJFRダンプを開いた後、JMCでの呼び出しツリー]タブには、次のようになります。

ここでは、画像の説明を入力します。

毎秒1個の未満のサンプルがあります。それは、詳細にドリルダウン、ホットメソッドと概要タブが効果的に無用になります。初期調査の後には、メソッドサンプリングは10ミリ秒のデフォルトに設定され、そして、それが判明して90秒の〜98%が、様々な異なるデータベースを読み込み実行しながら、ソケットI / Oを待機して過ごしているので、この予想外の結果があると判断されましたので、私は唯一の時間の他の〜2%のための方法のサンプルを取得しています。

どのように私は助けるために、法の時間にI / Oバウンドのサンプルを含むことができ、データベースの結果を待って、ほとんどの時間を費やしてのトレースを見つけますか?遅いコールパスを推測することは容易ではないので、このプロセスは、順番に他の複数の場所から呼び出された複数の場所でデータベースクエリを、含まれています。

Kire Haglin :

JDK 8の最低メソッド実行のサンプリングレートを使用して、プロファイル設定を得るものである、10ミリ秒です。これは、アプリケーションの負荷があると仮定すると、90秒の記録のためのより十分なものでなければなりません。そこ少なすぎるサンプルにつながるJDK 11のバグだったが、私はあなたが以前のリリースを実行しているスクリーンショットから見ることができます。

あなたはアプリケーションが待機しているときにやっているかを知りたい場合は、レイテンシタブ(ないホットメソッド)またはソケット読み取り/書き込みソケットのタブをご覧ください。ソケット読み取り、ソケットの書き込みのためのイベントがありますが、モニターは、モニター等を待って、ブロックされていますが、I / O非同期(async)を使用している場合は適用されない場合があります。

EDIT

ここでは、画像の説明を入力します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=189212&siteId=1