• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

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

問題を作成する

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 監視。 追加の設定は必要ありません。JavaagentをインストールしJFR サービスが有効になっていることを確認するだけで、JFR データは Javaagent と同じ

    アプリケーションに流れ込みます。 New Relic Javaエージェント バージョン 7.0.0 以降が必要です。

  • スタンドアロンプロセス- 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サブシステムが追加のメモリを使用することが予想されます。

ヒント

Javaagent リリース 8.0.0 以降では、JVM を再起動せずに JFR プロファイリング設定を動的に変更できます。 これを行うには、 Settings > Application > Java Flight Recorderの設定を切り替えるか、 jfr.enabled設定を変更してください。

自分のデータを見る

データを表示するには、 one.newrelic.com > All capabilities > APM & Services > (select service) > More views > Realtime Profiling Javaにアクセスしてください。

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

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

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

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

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

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

JVM の健全性の計算方法の詳細な内訳については、 How is JVM health determined?を選択してください。

JVMの詳細

JVM の詳細ページを見つけるには、 one.newrelic.com > All capabilities > APM & Services > (select service) > Realtime Profiling Java > (select JVM)にアクセスしてください。

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

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

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

重要

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

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

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

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

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

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

Copyright © 2024 New Relic株式会社。

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