このブログでは Web サイトはオートスケールで使え!と主張しているんですが、昨日初めて実際に動かしているサービスでオートスケールが実行されたので、その実行ログを眺めてみました。
ちなみにオートスケールで 1 から 2 インスタンスに増えた時のログは以下の通りです。
管理ポータルからは CPU 使用率の最小、最大とインスタンスの最小、最大しか基本的には指定できないですが、ログを見ると結構細かく設定できそうなことが分かりました。
例えば Web サイトでは CPU 使用率の平均と言っても期間が不明でした。しかし、ログを見る限りでは 45 分間の平均で判断している可能性がありますね。
"TimeWindow": "PT45M", "TimeAggregation": "Average",
PT45M とは Pacific Time なのかよくわかりませんが、他の値を見る感じでは 45M はそのまま 45 分で間違いは無さそうです。
他にも ScaleAction には Cooldown といった値が確認できます。
"ScaleAction": { "Direction": "Increase", "Type": "ChangeCount", "Value": "1", "Cooldown": "PT5M" }
これは推測になりますが、インスタンスを 1 つ増やしたあと 5 分間は増やす処理を行わないということかと思います。
ですので、この場合は 5 分後に CPU 使用率が高い場合には、更に増やす処理が実行されると考えられます。逆に減らす場合は 2 時間となっているので、急激にインスタンス数が減るということは無さそうです。
このあたりは以前にオートスケールを検証した結果と概ね一致していますね。
Windows Azure Web サイトのオートスケールを検証してみた - しばやん雑記
TimeGrain の値はよくわからなかったのですが、恐らくオートスケール処理を行うかチェックする間隔なのではないかと。
本当に Web サイトは奥が深いですね。
追記
Facebook のコメントでさとうなおきさんから、PT** という値は XML Schema の duration だと教えていただきました。
XML Schema Part 2: Datatypes Second Edition
仕様書を読んでみると、P は経過を T は日付と時間を区切ることを表しているようなので、PT45M というのは 45 分の経過を表していることになりますね。