BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース New RelicがJFRを利用したリアルタイムJavaプロファイラを提供

New RelicがJFRを利用したリアルタイムJavaプロファイラを提供

原文(投稿日:2020/11/09)へのリンク

New Relicは新たに、New Relic Oneのリアルタイムプロファイリング機能をリリースした。運用アプリケーションのJVMのパフォーマンス情報を、極めて低いオーバーヘッドでストリーム可能なこの機能は、OracleがJava 11でオープンソースとしたJVM機能のJava Flight Recorderを使用する。

今回リリースされたリアルタイムプロファイラは、Java Flight Recorderの単一デスクトップGUIであるJava Mission Controlを拡張して、多数のJVMを対象とした長期間の可視性を提供するもので、機能的には8月に発表されたDataDogのContinuous Profilerに類似している。どちらのサービスも、その人気でOracleの"March Madness"ブラケットを勝ち上がったJFR機能を同じように活用する。Flight RecorderとMission Controlは、2010年以前からJRockit商用JVMに含まれていたもので、機能的には十分に開発されている。OracleのJava SE 8リリースでは有償部分にあったが、現在はすべてのコードがフリーのオープンソースになっている。連続プロファイラ以前のプロファイラの多くは、インストールが必要であったり、ログ解析やネイティブにロードされたコードに依存するものだった。

JFRを使用する監視ツールでは、JVMやその動作に対してより深い洞察を得ることが可能になる。例えばThreadLocal Allocation Buffer(TLAB)を参照し分析することで、どのスレッドがどのようなオブジェクト型をアロケートしているか、ピンポイントで知ることができるのだ。よく用いられる方法として、ガベージコレクション分析に関連して使用すれば、何が破棄されるかだけでなく、それがどこで生成されたのかを明らかにすることが可能になる。

New Relic Oneは開発者に対して、Flight Recorderフリート全体の一貫したビューを、ログなどの付加的なコンテキスト情報と合わせて提供する。ログ情報を加えることで、技術的なメトリクスのみを用いた単なるデータ参照の域を越えて、特定の時点でアプリケーションが何を行っていたかを理解する作業の支援が可能になる。

この方法のもうひとつのメリットは、JFRによる深部の解析をインフラストラクチャに関する情報と併用することによって、"騒がしい隣人(noisy neighbor)"が検出できることだ。同じシステムに多数のアプリケーションがホストされて、計算能力やストレージキャパシティを共有する場合には、しばしばパフォーマンスの低下が発生する。個々のメトリクスやアプリケーションメトリクスだけを追跡していると、原因がリソースの使用で競合する隣人の存在であるにも関わらず、アプリケーションのパフォーマンスに問題があると誤認される可能性がある。連続プロファイリング機能は、その監視レベルにより、追跡するメトリクスがアプリケーションの問題なのか、あるいはインフラストラクチャの問題に起因するのかを区別する上で有効である。

監視と可観測性の角度からのデメリットとして挙げられるのは、ダッシュボードに表示される問題への対応が、作業者の注意力や対応時間に依存している点だ。データや連続データが多いことが、自動的により早いソリューションを生み出す訳ではない。AWSが先頃公開した"best practices guide for operational dashboards"には、"作業者によるダッシュボードのレビューを必要とする運用プロセスは、レビューの頻度に関わらず、人的エラーによって失敗する"、という件がある。このAWSのガイダンスでは自動アラームを推奨しているが、Turbonomicなど他の企業ではアクションの自動化に向けた開発が進められている。

その一例がホスト上のCPU競合に関する"騒がしい隣人"の問題だ。一般的なアクションでは、仮想マシンのひとつを同一クラスタ内で使用率の低い別のホストにVMotionする。このシナリオでダッシュボードが提供するのは、問題を示すための"可視化"機能だ。警告システムが同じようなビューを表示して注意を促すのに対して、自動化されたシステムでは、インフラストラクチャを理解することで"実行"、すなわちvmotionの実行と問題の修正を行った上で、注意が必要な場合には問題が発生したことを管理者に通知することができる。自動化されたアクションのメリットは、継続的な理解と、その理解を迅速に適用可能な方法を用いることで、一定の時間内に大規模インフラストラクチャ全体に対する判断を下すことのできる点だ。

運用中のアプリケーションやサービスから連続メトリクスを取得する方法を知りたいユーザは、New Relic Oneの無償アカウントにサインアップするとよいだろう。 

この記事に星をつける

おすすめ度
スタイル

BT