Java Agentチームのシニアプロダクトマネージャー Abhi Arora からのお知らせです!


Javaで動いているアプリケーションやサービスのパフォーマンス・ボトルネックを潰していくすることで、非効率な処理でリソースを浪費している箇所を把握できるようになります。さらに、インシデントが発生した場合、そのときに何が起こっていたのか、どのようなパフォーマンス問題が発生したのかを知りたいはずです。このようなトラブルシューティングをより迅速かつ容易にするために、JVM上で実行されているコードのランタイム特性を忠実に確認する必要があります。それも、リアルタイムで、です。

そのためNew Relicでは、リアルタイム Java プロファイリングとJVMクラスタのタイムライン・ビューの提供を開始しました。リアルタイム Java プロファイリングはオーバーヘッドが少ないため、本番環境でJavaコードの継続的なプロファイリングを行うことができます。付属のJVMクラスタ・タイムライン・ビューは、クラスタ全体のパフォーマンス問題を迅速かつ直感的に診断する方法を提供します。

リアルタイム Java プロファイリング - コミュニティ駆動のプロジェクト

New Relicがリアルタイム Java プロファイリングに使用するプロファイリングデータは、Javaコミュニティの貢献から得られたものです。JDK 9のリリース後、オラクルはJavaのリリースモデルを変更し、Java Flight Recorder (JFR)をオープンソース化しました。Java 14では、JFRが強化され、プロファイリング・イベントの連続的なストリームを生成できるようになりました。この変更により、JFRイベント・ストリーミングは、オブザーバビリティを強化するための素晴らしい基盤となります。(JFRとJFR Event Streamingの詳細については、New RelicのBen Evans氏によるこの記事をチェックしてください。)

JVMクラスタの挙動を継続的に観測する

JVMクラスタのタイムライン表示では、クラスタ全体のJVMの動作が表示されます。このタイムラインにより、トラブルシューティングや問題の迅速な検出が可能になります。例えば、

  • 最近のデプロイは他のJVMクラスタにどのような影響を与えたか
  • いつ、なぜJVMが再起動したか
  • 特定のインスタンスは、不安定な接続先の影響をどのように受けたか
JVMクラスタのタイムライン表示による迅速なトラブルシューティング
JVMクラスタのタイムライン表示による迅速なトラブルシューティング

タイムラインの各行は、特定のJVMの情報を時間の経過ととも表しています。各行には、そのJVMの5分間の期間を表すボックスがあります。黄色、そして赤のトラフィックライトは、JVMの異常な動作を示しており、エラーやその他のパフォーマンス問題を調査する際に、インスタンスと適切な時間帯を素早く特定し、ドリルダウンすることができます。

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

1. プロセス内でリソースがどのように割り当てられているか

JVMの詳細ビューでは、スレッドごとのバッファ割り当て(TLAB)のグラフによって、どのスレッドが最も多くのリソースを消費しているかを見ることができます。このグラフから、新しいバッファ割り当てがアプリケーションスレッドに配られる個々のイベントを見ることができ、プロセス内のリソースをより正確に把握することができます。

2. ガベージコレクションがパフォーマンスに与える影響

ガベージコレクション(GC)グラフでは、JVMのライフタイムにわたるガベージコレクションのイベントを見ることができます。longest pauseは、選択した期間中に起こった長時間のガベージコレクションが発生した場所を示し、全体の時間は、与えられた期間内にGCに費やされた時間の合計を示します。

3. Logの情報からガベージコレクションを観測する

New Relic Logsを有効にしている場合、ガベージコレクショングラフのデータからJavaアプリケーションのログを表示し、長時間のガベージコレクションによる一時停止に巻き込まれたトランザクションを見つけることができます。

New Relic OneのリアルタイムJavaプロファイリングを始めましょう

New Relic Oneでは、リアルタイムJavaプロファイリングとクラスタタイムラインビューが利用可能で、このリアルタイムプロファイリングを他の重要な観測データと統合することができます。将来的には、スレッドプロファイリング、New Relic Alerts分散トレースNew Relic Infrastructureなど、New Relicプラットフォームの他の部分と統合できるように、リアルタイムJavaプロファイリングの機能を拡張していく予定です。

要件や開始方法についてさらに詳しく知りたい方は、ドキュメントをご覧ください。ご意見・ご感想がありましたら、ご連絡ください

Javaエコシステムで何が起きているのかをもっと知りたいですか?The State of Java: Trends And Data For One of the World’s Most Popular Programming Languages. もお見逃しなく。