New Relic サイエンス
New Relic は様々なデータを収集し可視化します。
ですが、可視化されたデータから意味を見出すのはエンジニアの役割となります。
New Relicがなぜそのデータを可視化し表示するのか
New Relic サイエンスと題して、New Relic のUIからどのように情報を読みとるのか、実際にNew Relicの各プロダクト画面をご紹介しながら解説していきます。
Apdex Score
Apdex Score ではNew Relic APM (およびNew Relic Browser)のApdex Scoreの推移が表示されます。
このグラフはデジタル・カスタマー・エクスペリエンス(顧客体験)のスコアが可視化されます。
Apdex とは
Apdex とはWEBサービス/アプリケーションの応答時間について、顧客満足度を可視化する業界標準の指標です。応答時間はアプリケーションの特性によって異なるため、比較する事が困難ですが、Apdexは顧客の満足度という尺度でアプリケーションの応答性能を可視化し測定、報告することが可能となります。
ApdexではユーザーへのレスポンスをSatisfied(満足)、Tolerating(許容範囲)、Frustrated(不満)の3つに分類しスコアを算出します。
Satisfiedを1点、Toleratingを 0.5点、Frustratedを0点としてその平均値を算出し、最高は1点最低は0点として表現されます。
計算式は以下のようになります。
Satisfied(満足)、Tolerating(許容範囲)、Frustrated(不満)は任意の基準値を元に自動的に仕分けされます。基準値は次のように呼ばれます。
apdex_t : Satisfied と判断する閾値、この時間よりも短時間で完了した処理は全てSatisfiedとして仕分けられます。
apdex_f : Frustratedと判断する閾値、apdex_t × 4 の値が自動的に適用されます。この時間を超えた処理はFrustratedとして仕分けられます。
判定 | 閾値 |
Satisfied(満足) | 処理時間 < apdex_t |
Tolerating(許容範囲) | apdex_t < 処理時間 ≦ apdex_f |
Frustrated(不満) | apdex_f < 処理時間 |
処理時間そのものを指標とした場合は、0.2秒の処理で0.5秒遅くなった場合と、5秒かかる処理で0.5秒遅くなった場合ではその影響は大きく異なりますが、どちらも500m秒遅くなったとしかレポート出来ず、その意味を判断するには処理時間全体を見る必要があります。
Apdexスコアを判断指標とすることで、秒数ではなくユーザー体験という指標で影響を判断することが出来るようになります。
Apdexスコアは1分毎に算出されます。1分当たりの処理件数(RPM)が100未満の場合はスコアが不安定となる場合があります。RPMが100未満のアプリケーションでApdexスコアを元にしたAlertを設定した場合、意図しないアラートが発報する可能性があります。
Apdex Tを設定する
Apdex Tの閾値はNew Relic APM/New Relic Browser の画面から設定を行うことが可能です。
Apdex Tの値はAgentのConfigファイルを触らずに、WEB UIから簡単に変更する事が可能です。これは、アプリケーションの改善に合わせて、閾値を変更していくことが想定される値であるためです。
Apdex Tをどう決めるか
Apdexは顧客満足度を可視化する指標です。はじめは非機能要件などで定義される応答時間を元に設定する方法があります。
またapdex f(apdex t ×4)は詳細なTransaction情報を収集するかどうかの閾値となります。
※Agent のConfigファイルで別途固定値を設定することもできます。
これは、開発者がアラートノイズに悩まされないための仕組みとなります。
非機能要件などの基準が無い場合は、実際にAPM/Browserで測定された処理時間を元に設定すると良いでしょう。
これにより普段よりも処理が遅くなった場合詳細なTraceが取得され、改善すべきポイントが明確化されます。そしてアプリケーションの改善が進みApdex Scoreが1に近づいたら、Apdex Tの値をより小さな値への変更する事でこれまでは取得していなかったTransaction Traceが収集されるようになり、新たな改善ポイントが可視化されるようになります。
アプリケーションの改善を継続していくために理想的なApdex Scoreは0.95となります。より多くの改善を進めたい場合は0.92や0.90となるように調整する事も可能です。
New Relic が多くの例を元に実際に測定した結果では、Apdex Tの値をアプリケーション処理時間の90パーセンタイル値の値に設定した場合にApdex Scoreは0.95と一致しました。
Apdex Score | Apdex Tに設定したパーセンタイル値 |
0.85 | 70% |
0.88 | 76% |
0.90 | 80% |
0.92 | 84% |
0.94 | 88% |
0.95 | 90% |
0.96 | 92% |
0.98 | 96% |
90パーセンタイル値は以下のNRQLで算出することができます。
select percentile(duration, 90) from Transaction where appId=<アプリケーションID> since 24 hours ago
まとめ
Apdex Scoreを利用する事で、アプリケーション毎の処理時間ではなく、ユーザー体験を元に性能の改善/劣化を判断することができるようになります。
情報は多すぎても、少なすぎても業務の効率が悪くなります。Apdex Tをアプリケーションの改善進捗に合わせて適宜変更をしていくことで、どこから手を付けるべきか悩まされることなく優先度を付けてアプリケーションを改善していくことが出来るようになります。
次回はTransactions の見方についてお送りいたします。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。