• English日本語한국어
  • ログイン今すぐ開始

この機械翻訳は参考用に提供されます。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、 を参照してください。

問題を作成する

JFRメトリクスを用いたJavaのリアルタイム・プロファイリング

New Relic の Java Flight Recorder (JFR) メトリクスを使用した Java 用リアルタイムプロファイリングを使用すると、本番環境の Java コードのプロファイリングを継続的かつ常時実行することができます。また、JVMクラスタのタイムライン表示により、クラスタ全体のパフォーマンス問題を迅速かつ直感的に診断することができます。例えば、アプリケーションのデプロイメントがクラスターの全体的な健全性にどのような影響を与えるかを素早く確認することができます。

パフォーマンスのボトルネックを見つける

Javaアプリケーションやサービスにおけるパフォーマンスのボトルネックをトラブルシューティングすることは、以下のような理解を深めるのに役立ちます。

  • リソースを無駄にしている箇所
  • インシデント発生時
  • インシデントで起きたこと
  • インシデントに至るまでのパフォーマンスの問題点

トラブルシューティングを迅速かつ容易にするためには、JVM上で実行されているコードのハイフィデリティなランタイム特性を確認する必要があり、そのデータはリアルタイムで必要となります。

JFRデーモン

JFRデーモンはJFRイベントのエクスポーターであり、JVMの動作を視覚化するためにNewRelicプラットフォームの機能を利用できます。基盤となる実装としてNewRelicJavaテレメトリSDKを使用して、JFRデーモンはJFRイベントをNew Relicテレメトリタイプに変換し、NewRelicのメトリックおよびイベント取り込みAPIに報告します。

JFRデーモンには3つの使用方法があります。

  • New Relic Java エージェント JFR サービス (推奨) - 主力の New Relic Java エージェントに組み込まれた JFR 監視。 追加のセットアップは必要ありません。Java エージェントをインストールするだけで、 JFR サービスが有効になっていることを確認できます。JFR データは同じ

    アプリケーションを Java エージェントとして使用します。 New Relic Java エージェント バージョン 7.0.0+が必要です。

    • : JFR リアルタイム プロファイリングは、 エージェント サーバー側の構成を介して切り替えることができます。これにより、ターゲット アプリケーションを再起動しなくてもプロファイリングを切り替えることができます。
  • スタンドアロンプロセス- jfr-daemonをスタンドアロンプロセスとして実行し、リモートJMXを使用して既存のJavaプロセスを監視するように設定します。

  • スタンドアロンJavaエージェント- jfr-daemonをJavaエージェントとしてJavaプロセスに接続します。 NewRelicJavaエージェントの軽量な代替品。

対応するJavaのバージョン

JFRデーモンはJava 11以上のバージョンをサポートしていますが、LTS以外のバージョンのJavaを本番環境で使用することはお勧めしません。

一部のベンダーは、JFRをJava 8バイナリにバックポートしています。例えば、OpenJDKではバージョン8u262でJFRをバックポートしています。JFRデーモンはこれらのJavaバージョンと互換性があります。

要件と使用方法

必要な条件や手順は、それぞれの利用シーンによって異なります。詳細については、それぞれの使用方法のリンクを参照してください。

重要

JFRデーモンを使用するアプリケーションでは、JFRサブシステムが追加のメモリを使用することが予想されます。

ヒント

Java エージェント リリース 8.0.0 以降を使用すると、JVM を再起動せずに JFR プロファイリング構成を動的に変更できます。これを行うには、 Settings > Application > Java Flight Recorder [設定 > アプリケーション > Java Flight Recorder]で設定を切り替えるか、 jfr.enabled構成を変更します。

自分のデータを見る

データを表示するには、 one.newrelic.com > All capabilities > APM & services > (サービスを選択) > More views > Realtime Profiling Javaに移動します。

時系列でのJVMクラスタの挙動を把握

JVMクラスタのタイムラインビューは、クラスタ全体のJVMの動作を表示します。このタイムラインにより、トラブルシューティングや問題の検出を迅速に行うことができます。例えば、一目で分かるようになっています。

  • 最近のデプロイメントが他のJVMクラスターに与える影響
  • JVMの再起動時
  • 個々のインスタンスがノイズの多い隣人からどのような影響を受けたか

トラブルシューティングを容易にするためには、JVM上で実行されているコードの高忠実度のランタイム特性を確認する必要があり、そのデータはリアルタイムで必要となります。

one.newrelic.com > All capabilities > APM & services > (サービスを選択) > Realtime Profiling Java: JVM クラスターのタイムライン ビューには、クラスター全体の JVM の動作が表示されます。

タイムラインの各行は、特定の JVM を時系列で表します。各行内のボックスは、その JVM の存続期間のうちの 5 分間を表します。最も深刻なものから最も深刻なものまで、黄色、オレンジ、赤の信号は JVM の異常な動作を示しているため、エラーやその他のパフォーマンスの問題を調査するときに、そのインスタンスと適切な期間をドリルダウンできます。

How is JVM health determined? を選択すると、JVMの健全性がどのように計算されるかについての詳細な内訳が表示されます。

JVMの詳細

JVM の詳細ページを見つけるには、 one.newrelic.com > All capabilities > APM & services > (サービスを選択) > Realtime Profiling Java > (JVM を選択)に移動します。

各JVMの詳細パネルには、いくつかの重要なビューが表示されます。

  • ユーザーの CPU 使用率
  • マシンの CPU 使用率
  • ヒープ サイズ
  • ガベージ コレクション期間
  • ガベージ コレクションの最長休止時間
  • ユーザー スレッドの CPU 使用率
  • システム スレッドの CPU 使用率
  • スレッドごとの小さなオブジェクトの割り当て
  • スレッドごとの大きなオブジェクトの割り当て
  • スレッドごとのネットワーク読み取り
  • スレッドごとのネットワーク書き込み
  • スレッドあたりのバッファ割り当てサイズ
  • 合計スレッド割り当て
  • スレッドあたりの合計オブジェクト割り当て
  • メタスペース

フレイムグラフを用いたリソース集約型のコードパスの特定

重要

フレームグラフ機能は、 New Relic Java エージェント JFR サービス の利用シナリオにのみ対応しています。

"炎のグラフ" は、コールツリーを視覚化する方法の一つです。グラフの各ブロックは、関数を表しています。メソッドが消費するCPU時間とメモリリソースが多いほど、そのブロックは広くなります。

フレーム・グラフを使って、アプリケーション・コード内で最も頻繁に実行されるJavaクラスやメソッドを特定します。フレイムグラフを使ってコードのホットスポットを最適化することで、リソースの消費を抑え、アプリケーションの全体的なパフォーマンスを向上させることができます。

ここでは、フレイムグラフの色についてご紹介します。

  • 灰色のグラデーション: Java SE パッケージのメソッドに灰色のグラデーションを適用します。呼び出し数が少ないほど明るい色合いになり、呼び出し数が増加するにつれて徐々に暗い色合いに移行します。
  • 黄-オレンジ色のグラデーション: 黄-オレンジ色のグラデーションを他のライブラリのメソッドに適用します。呼び出し数が少ないほど黄色が多くなり、呼び出し数が増加するにつれて徐々にオレンジ色が多くなります。

one.newrelic.com > APM & Services > (サービスを選択) > Realtime Profiling Java > (JVM を選択): フレーム グラフを含む各 JVM の詳細を確認できます。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.