App Serviceにおけるスケールルールについて

はじめに
App Serviceには、設定したメトリクスや時間によって、インスタンスを拡張し、性能を柔軟に変更できる「スケールイン/スケールアウト」の機能があります。
「○時~×時まで3台にする」といった時間をトリガーとする場合はシンプルなのですが、メトリクスによってスケールルールを設定する場合、用語が多く若干わかりにくい部分もあります。そういった背景もあり、この記事では各項目について可能な範囲でわかりやすくまとめてみました。
各項目の説明と、特にわかりにくい部分をイメージ図ふまえてご紹介します。

 

各項目の意味
以下図の番号毎に各項目を紹介します。

▲Azureポータル上のスケールルール設定ページ

①時間の集計
下記記載の「⑥期間」で定めた時間の中で「③時間グレイン」単位で取得した値の集計方法です。
下の項目の説明を読んでからの方がわかりやすいかと思います。。。

平均…取得した値の平均値
最小…取得した値の中での最小値
最大…取得した値の中での最大値
合計…取得した値の合計値、キューの長さ等を確認したいときに使用する値で、スケールルールのしきい値としては適さない
最終…取得した値の中での最終(一番直近)の値
カウント…取得した値の個数、障害検知等での利用用途はあるが、これもスケールルールのしきい値としては適さない

②メトリック名
取得する値の種類です。「③時間グレイン」の長さはメトリックによって固定で決まっています。
性能によってスケールイン/アウトさせる場合、CPU Percentageを設定することが一般的です。

CPU Percentage…App ServiceのCPU使用率。単位:%
Memory Percentage…App Serviceのメモリ使用率。単位:%
Disk Queue Length…ディスクアクセスまたは書き込み待ちの数。単位:カウント
Http Queue Lenth…HTTP処理待ちの数。単位:カウント
Data In…入力データ容量。単位:Bytes
Data Out…入力データ容量。単位:Bytes

③時間グレインの統計
最小集計単位で取得してきた値の集計方法、この集計方法で決定した値が時間グレインの値となる。

平均…取得した値の平均値
最小…取得した値の中での最小値
最大…取得した値の中での最大値
合計…取得した値の合計値、キューの長さ等を確認したいときに使用する値で、スケールルールのしきい値としては適さない

④⑤演算子、しきい値
これらを組み合わせてオートスケールをキックする条件を設定します。
ここはイメージがしやすいかと思いますので割愛します。

⑥期間
最終的な値を集計する期間となります。

 

最小取得単位・時間グレイン・期間の考え方
時間グレインの説明で出てきた「最小取得単位」とは、Azureが内部的に取得する最も小さい範囲でのメトリックログです。範囲は5~10秒程度の範囲となりますが、これはポータルから確認できません。App Serviceのダッシュボードなどから確認できるメトリックのグラフなどでの最小単位は1分単位の値で、これは1分間に取得した最小取得単位の平均値になります。
それぞれの関係を以下イメージ図として記載します。

▲最小取得単位・時間グレイン・期間のイメージ図

 

まとめ
項目の意味が理解できましたか?
次の記事では信頼性を高める設定や、ユーザー影響を限りなく抑える形の設定などの設定サンプルを紹介する予定です。
スケールイン/アウトはクラウドの特性を生かしたとても便利な機能です。スケールアウトだけでなく、スケールインも積極的に使い、コストの最適化を図ってもらえればと思います。

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、弊社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。