Azure App Service での自動スケーリング

注意

自動スケーリングはプレビュー段階です。 Premium V2 (P1V2、P2V2、P3V2) および Premium V3 (P1V3、P2V3、P3V3) の価格レベルで使用でき、Windows、Linux、および Windows コンテナーのすべてのアプリの種類でサポートされています。 デプロイ スロット トラフィックでは、自動スケーリングはサポートされていません。

自動スケーリングとは、Web アプリと App Service プランのスケーリングに関する決定を自動的に処理する新しいスケールアウト オプションです。 これは、スケジュールとリソースに基づいてスケーリング ルールを定義できる、既存の Azure 自動スケーリングとは異なるものです。 自動スケーリングでは、スケーリング設定を調整して、アプリのパフォーマンスを向上させ、コールド スタートの問題を回避することができます。 プラットフォーム上にあるスケールアウト時にバッファーとして機能するインスタンスが事前にウォームアップすることで、パフォーマンスのスムーズな移行を実現します。 ユーザーは、Application Insights Live Metrics を使用して現在のインスタンス数をチェックし、performanceCounters を使用してインスタンス数の履歴をチェックできます。 課金は、事前にウォームアップされたインスタンスを含め、すべてのインスタンスに対して 1 秒単位で行われます。

以下は App Service で使用できるスケールアウトオプションとスケールインオプションの比較です。

  [手動] Autoscale 自動スケーリング
利用可能な価格レベル Basic および Up Standard および Up Premium V2 (P1V2、P2V2、P3V2) および Premium V3 (P1V3、P2V3、P3V3)
ルールベースのスケーリング いいえ はい いいえ。プラットフォームは、HTTP トラフィックに基づいてスケールアウトと インを管理します。
スケジュールベースのスケーリング いいえ イエス いいえ
常時使用可能なインスタンス いいえ。Web アプリは、手動でスケーリングされたインスタンスの数で実行されます。 いいえ。Web アプリは、自動スケーリング ルールに定義されたしきい値に基づいて、スケールアウト操作中に使用可能な他のインスタンスで実行されます。 可 (最小 1)
事前ウォーミングされたインスタンス いいえ いいえ 可 (既定 1)
アプリごとの最大値 いいえ 番号 はい

自動スケーリングの仕組み

App Service プランに対して自動スケーリングを有効にし、各 Web アプリのインスタンスの範囲を構成できます。 Web アプリが HTTP トラフィックの受信を開始すると、App Service は負荷を監視し、インスタンスを追加します。 App Service プラン内の複数の Web アプリを同時にスケールアウトする必要がある場合、リソースを共有できます。

自動的にスケールアウトする必要があるシナリオをいくつか次に示します。

  • リソース メトリックに基づいて自動スケーリング ルールを設定する必要はありません。
  • 同じ App Service プラン内の Web アプリを、互いに異なる方法で個別にスケーリングする必要があります。
  • Web アプリはデータベースまたはレガシ システムに接続されており、Web アプリほど高速にスケーリングできない場合があります。 スケーリングを自動的に行うことで、App Service プランでスケーリングできるインスタンスの最大数を設定できます。 この設定は、Web アプリがバックエンドをあふれさせないようにするのに役立ちます。

自動スケーリングを有効にする

最大バーストは、受信 HTTP 要求に基づいて、App Service プランで増やすことができるインスタンスの最大数です。 Premium v2 と v3 プランの場合には、最大 30 インスタンスのバーストを設定できます。 最大バーストは、App Service プランに指定されたワーカーの数以上である必要があります。

重要

自動スケーリングを使用するには、Always ON を無効にする必要があります。

自動スケーリングを有効にするには、Web アプリの左側のメニューで [スケールアウト (App Service プラン)] を選択します。 [自動 (プレビュー)] を選択し、[最大バースト] の値を更新して、[保存] ボタンを選択します。

Automatic scaling in Azure portal

Web アプリ インスタンスの最小数を設定する

Always Ready インスタンスは、インスタンスの最小数を指定するアプリ レベルの設定です。 読み込みが常に使用可能なインスタンスで処理できる量を超える場合は、追加のインスタンスが追加されます (App Service プラン向けに指定された最大バーストまで)。

Web アプリのインスタンス数を最小に設定するには、Web アプリの左側のメニューで [スケールアウト (App Service プラン)] を選択します。 [常時使用可能なインスタンス] の値を更新し、[保存] ボタンを選択します。

Screenshot of always ready instances

Web アプリ インスタンスの最大数を設定する

最大スケール制限は、Web アプリがスケーリングできるインスタンスの最大数を設定します。 最大スケール制限は、データベースなどのダウンストリーム コンポーネントのスループットが制限されている場合に役立ちます。 アプリごとの最大値は、1 から 最大バーストまでの間で指定できます。

Web アプリのインスタンス数を最大に設定するには、Web アプリの左側のメニューで [スケールアウト (App Service プラン)] を選択します。 [スケールアウト制限を適用する] を選択し、[最大スケール制限] を更新して、[保存] ボタンを選択します。

Screenshot of maximum scale limit

事前ウォーミングされたインスタンスを更新する

事前ウォーミングされたインスタンス数の設定により、HTTP スケールおよびアクティブ化イベント中に、ウォーミングされたインスタンスがバッファーとして提供されます。 事前ウォーミングされたインスタンスは、スケールアウトの上限に達するまでバッファーに格納され続けます。 事前ウォーミングされたインスタンスの既定の数は 1 であり、ほとんどのシナリオではこの値を 1 のままにしておく必要があります。

事前ウォーミングされたインスタンス数の設定は、ポータルでは変更できません。代わりに、Azure CLI か Azure PowerShell を使用する必要があります。

自動スケーリングを無効にする

自動スケーリングを無効にするには、Web アプリの左側のメニューで [スケールアウト (App Service プラン)] を選択します。 [手動] を選択し、[保存] ボタンを選択します。

Screenshot of manual scaling

自動スケーリングは Azure Function アプリをサポートしていますか?

いいえ。自動スケーリングを有効にする App Service プランでは、Azure App Service Web アプリのみを使用できます。 同じ App Service プランに既存の Azure Functions アプリがある場合、または新しい Azure Functions アプリを作成した場合、自動スケーリングは無効になります。 Azure Functions の場合は、代わりに Azure Functions Premium プランを使用することをお勧めします。

その他のリソース