LoginSignup
5
5

Javaアプリを手軽にリアルタイムプロファイリングする

Last updated at Posted at 2023-08-21

概要

Javaを使ったアプリケーションを運用する場合、JVMやGCと付き合っていく必要があります。それらの情報を取得しプロファイリングするツールとしてJava Flight Recorder(JFR)がありますが、New Relicでもその結果を可視化して分析することができます。

New Relic APMエージェントでは、このJFRを使ったリアルタイムのプロファイリングをアプリケーションの再起動なしに有効化・無効化して気軽に利用できます。これにより、例えば本番環境で何かしらの性能問題が発生した場合であっても調査のために一時的にプロファイリングすることができます。

無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

それでは早速JFRによるリアルタイムプロファイリングを試してみましょう。

手順

手順は非常に簡単で、UI上からJFRによるリアルタイムプロファイリング機能を有効にするだけです。
New Relicログイン後、「APM & Services」メニューから、New Relic APMの画面で対象のアプリケーションを選択します。
続いて、APMのメニューにある「Application」を選択します。

image.png

Applicationメニューでは、APMエージェントの設定の一部を画面上から実施できます。
まずは、「Enable server-side configuration」をONにして、設定がエージェントに反映されるようにします。
image.png

続いて、「Enable Java flight recorder」をONにして、JFRによるリアルタイムプロファイリングを開始します。
image.png

設定はこれで完了です。
設定内容が稼働中のアプリケーションで動作するAPMエージェントに反映され、プロファイラーが稼働し始めます。

画面上で確認してみましょう。
APMの画面の「Realtime Profiling Java」メニューで収集したデータが確認できます。
image.png

JVM毎にJFRで収集したデータが時系列で表示されます。今回の例ではJVMが1つですが、アプリケーションがスケールアウト構成の場合はホストやコンテナ毎にJVMが表示されます。
スクリーンショット上では特に問題は見受けられませんが、CPU使用率やヒープ使用率が上昇している場合はWarning(黄色)やCritical(赤)でハイライトされます。
image.png

特定の時間帯をクリックすると、その時間帯のプロファイリング結果が確認できます。
具体的には、コールスタックのメソッド毎の実行時間やJVMのCPU使用率、GCの発生状況などです。
image.png

稼働中のアプリでもUIで設定するだけでリアルタイムプロファイリングができることが確認できました。
調査が終了した場合は、冒頭の設定と同じ流れでJFRによるリアルタイムプロファイリングを無効にできます。

まとめ

今回、JFRによるJavaアプリケーションのリアルタイムプロファイリングが簡単にできることをご紹介しました。
本番環境などで性能問題が発生した場合にはアプリの再起動せずに確認できるのでお試しください。

無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5