New Relic サイエンス
New Relic は様々なデータを収集し可視化します。
ですが、可視化されたデータから意味を見出すのはエンジニアの役割となります。
New Relicがなぜそのデータを可視化し表示するのか
New Relic サイエンスと題して、New Relic のUIからどのように情報を読みとるのか、実際にNew Relicの各プロダクト画面をご紹介しながら解説していきます。
Transactions Time
New Relic APMの画面で、アプリケションを表示した時、一番最初に見えるグラフがTransaction Time グラフです。
このグラフはアプリケーションの処理時間を示しています。
それでは、このグラフからどのような情報が読み取れるのか見ていきましょう。
Transaction Time
Transaction Timeはアプリケーションを構成する要素毎の処理時間を積層して、システム全体の応答時間を表示しています。
この例ではPHP、MySQL、web external(外部WEB呼び出し)が表示されています。アプリケーションの構成によっては、さらにキャッシュ(memcached)などが表示される場合もあります。
このグラフからサービスの応答時間におけるそれぞれの要素の寄与度を把握することができます。
また、一時的な高負荷やレスポンスタイムの悪化があった際に、どの部分がボトルネックになっているのかを把握することができます。このアプリケーションでは、通常時の処理でも、またレスポンスタイムが一時的に大きくなっている部分でも大きく影響を与えているのはPHPであるということが読み取れます。この場合にはアプリケーションそのもののロジックやコードの改良がアプリケーションの処理速度に大きく関係すると言うことを判断することができます。
もしDatabaseの占める割合が大きいアプリであればRDSのようなマネージドなDBサービスのスペックアップやパフォーマンスチューニングによって大きな改善が見込めますが、もともとDataBaseの占める割合が小さなアプリではDBサービスのスペックアップよりもアプリケーションロジックの変更の方が効果を発揮すると判断することが出来ます。
この判断を行う事によってどこに投資をするべきか、闇雲に改善を行うのではなく、効果の出る投資を行う事が出来るようになります。
さらに、急にアプリケーションの応答時間が遅くなったというAlertを受けてAPMでこのようなグラフが表示されていた場合アプリケーションやDataBaseの処理性能は変化しておらず、外部のWEBServiceのレスポンスが劣化しているという事を即座に把握することができます。
この場合は、アプリケーションやデータベースの処理を疑うのではなく、外部サービスで何か障害情報が出ていないか、ネットワーク障害が出ていないかなど調べる部分、確認する事項を特定することが可能となります。
アプリケーションのパフォーマンス低下の原因を素早く把握することは、障害対応はもとより、ユーザーに対して適切なアナウンスを行う事にもつながり、ブランドイメージの向上にも繋がるものとなります。
ヒストグラム
Transaction Time グラフのグラフアイコンをクリックすると、ヒストグラム表示を選択すること出来ます。ヒストグラム表示では一定の時間で処理できた件数の分布が表示されます。
処理の重さが均一であれば、ヒストグラムは正規分布に近づきます。
処理内容に偏りがある場合、複数の山を持つ分布として現れます。この山は例えば、必要なテーブル数やOrderの品目数の差が関連して現れてきます。
大半のライトユーザと一部のヘビーユーザーとで別々の山が現れるという形で、可視化されます。ヒストグラムで右端に大きなバーが出ていない事を確認することで一部の上得意様でフラストレーションが溜まるような状況になっていないかを確認することができます。
パーセンタイル
パーセンタイルとは、値を昇順ソートした際に何パーセント番目の値を意味する値となります。
50パーセンタイルは50%番目に大きな数字:中央値
99パーセンタイルは99%番目に大きな数字:最大値の少し前の値となります。
この例では、処理時間が大きくなったタイミングでMedian(中央値)がAverage(平均値)よりも小さくなっています。
このことから、全ての処理が遅くなったのではなく、一部の低速な処理(99パーセンタイル)によって全体(平均)の処理時間が遅く見えているということがわかります。
処理全体ではなく(中央値自体も上昇はしているので、やや影響はありますが)、一部の特定のパターンで特に遅くなっているということが推測できます。
New Relic One での表示
New Relic One の場合も同じようにグラフを確認していただく事ができます。
New Relic One ではEntityExplorerから確認します。
Servicesから対象のアプリケーション名をクリックします。
WEB Transaction TimeはSummaryメニューで表示されます。
また、ヒストグラムやパーセンタイルはTransactions メニューで表示されます。
まとめ
Transaction Timeを分析する事で、パフォーマンス改善のためにインフラを増強するのか、アプリを変更するのかあるいは外部サービスの問題なのか、どこから手を付けることがより大きな効果を発揮するのかを把握することが出来るようになります。またヒストグラムを確認することで、上得意様のようなヘビーユーザーなど特定の場合だけ遅くなっている可能性がないかを簡単に推測することが可能となります。
アプリケーションの全体像と効果的な投資ポイントなど概要を把握するためのグラフであるからこそシステム視点でもビジネス視点でも方向性を決めるための重要なグラフとなります。
次回はApdex scoreについてお伝えしたいと思います。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。