すべてのプロダクト
Search
ドキュメントセンター

:リザーブドインスタンスの自動スケーリング

最終更新日:Apr 09, 2025

予約モードでは、関数呼び出し要求に応答してインスタンスを予約できます。 これにより、コールドスタートの発生が減り、待ち時間に敏感なオンラインサービスの応答速度が向上します。 予約済みインスタンスをより有効に活用するために、スケジュール済みの自動スケーリングまたはメトリックトレーシングの自動スケーリングを実行できます。

スケジュールされた自動スケーリング

  • 定義: 予約済みインスタンスを柔軟に設定するために、スケジュール済みの自動スケーリングを使用します。 インスタンスの数がビジネスの同時実行性を満たすように、指定された時間に指定された値に自動的に調整されるようにリザーブドインスタンスの数を設定できます。
  • シナリオ: スケジュールされた自動スケーリングを使用して、関数の定期的または予測されるトラフィックピークに先立ってインスタンスを予約できます。 関数によって同時に呼び出されるインスタンスの数が、リザーブドインスタンスの同時実行性よりも高い場合、超過インスタンスは従量課金で課金されます。
  • 設定例: 2つのスケジュールされた操作が設定されます。 最初のスケジュールされた操作は、トラフィックピークの前にリザーブドインスタンスをスケールアウトし、2番目のスケジュールされた操作は、トラフィックピークの後にリザーブドインスタンスをスケールアウトします。instance
パラメータ設定の例:
  • この例では、service_1という名前のサービスのfunction_1という名前の関数は、自動的にスケールインおよびスケールアウトするように構成されています。 function_1のスケーリング期間を、2020年11月1日2020日の10:00:00から11月30日の10:00:00 (UTC + 8) までの期間に設定します。 リザーブドインスタンスの数は、毎日20:00に50にスケールアウトされ、毎日22:00に10にスケールインされます。
  • {
      "ServiceName": "service_1" 、
      "FunctionName": "function_1" 、
      "Qualifier": "alias_1" 、
      "SchedulerActions": [
        {
          "名前": "action_1" 、
          "StartTime": "2020-11-01T10:00:00Z" 、
          "EndTime": "2020-11-30T10:00:00Z" 、
          "TargetValue": 50、
          "ScheduleExpression": "cron(0 0 20 * * *)"
        },
        {
          "名前": "action_2" 、
          "StartTime": "2020-11-01T10:00:00Z" 、
          "EndTime": "2020-11-30T10:00:00Z" 、
          "TargetValue": 10、
          "ScheduleExpression": "cron(0 0 22 * * *)"
        }
      ]
    }
  • パラメーター
    パラメーター説明スキーマ
    名前スケジュールされた自動スケーリングタスクの名前。String
    StartTime設定が有効になり始めた時刻。 値をUTCで指定します。String
    EndTime設定の有効期限が切れる時刻。 値をUTCで指定します。String
    ターゲット値到達するインスタンスの数。整数 (int64)
    ScheduleExpressionスケジュールされたタスクをいつ実行するかを指定するスケジュール式。 次の形式がサポートされています。
    • At expressions - "at(yyyy-mm-ddThh:mm:ss)": スケジュールされたタスクを1回だけ実行します。 値をUTCで指定します。
    • Cron expressions - "cron(0 0 20 * * *)": スケジュールされたタスクを複数回実行します。 標準のCRON形式で値を指定します。 たとえば、cron(0 0 20 * * *) は、スケジュールされたタスクが毎日20:00に実行されることを示します。
    String
    次の表では、CRON式 (秒分時間月の曜日) のフィールドと特殊文字について説明します。
    表 1. フィールド
    フィールド名有効値許可された特殊文字
    0から59なし
    0から59, - * /
    時間0から23, - * /
    月の日1から31, - * ? /
    1〜12またはJAN〜DEC, - * /
    曜日1〜7またはMON〜SUN, - * ?
    表2. 特殊文字
    キャラクター説明
    *anyまたはそれぞれを示します。Minutesフィールドの0は、タスクが毎分0秒で実行されることを示します。
    ,リスト値を示します。曜日のフィールドでは、MON、WED、およびFRIは、月曜日、水曜日、および金曜日を示す。
    -範囲を示します。[時間] フィールドの10-12は、UTCの時間範囲が10:00から12:00であることを示します。
    ?不確定な値を示します。この値は他の指定された値とともに使用されます。 たとえば、特定の日付を指定しても、曜日を気にしない場合は、[曜日] フィールドでこの特殊文字を使用できます。
    /値の増分を示します。 例えば、n/mは、その都度、増分mをnに加算することを意味する。フィールドの3/5は、分3から開始して5分ごとに動作することを示す。

メトリック追跡自動スケーリング

  • 定義: メトリック追跡自動スケーリングは、メトリックを追跡してリザーブドインスタンスを動的にスケーリングします。
  • シナリオ: Function Computeは、リザーブドインスタンスの同時実行使用率を定期的に収集し、リザーブドインスタンスのスケーリングを制御するために設定したスケールアウトおよびスケールイントリガー値とともにこのメトリックを使用します。 このようにして、ビジネスニーズに基づいてリザーブドインスタンスの数をスケーリングできます。
  • 原則: リザーブドインスタンスは、メトリックに基づいて1分ごとにスケールインまたはスケールアウトされます。
    • メトリックがスケールアウトしきい値を超えると、システムはインスタンスの数をできるだけ早くターゲット値にスケールアウトします。
    • メトリックがスケールインしきい値よりも低い場合、システムはインスタンスの数をターゲット値にわずかにスケーリングします。
    リザーブドインスタンスの最大数と最小数が設定されている場合、システムはリザーブドインスタンスの数を最大数と最小数の間でスケーリングします。 インスタンス数が値の範囲に達すると、スケーリングは停止します。
  • 設定の例: instance
    • トラフィックが増加し、必要なインスタンスの数がスケールアウトしきい値の80% に達すると、リザーブドインスタンスの数はスケールアウトしきい値に達するまでスケールアウトを開始します。 リザーブドインスタンスで処理できないリクエストは、従量課金インスタンスに送信されます。
    • トラフィックが減少し、必要なインスタンスの数がスケールインしきい値の60% に達すると、リザーブドインスタンスの数はスケールインを開始します。
リザーブドインスタンスの同時実行使用率を計算するために、リザーブドインスタンスの統計のみが収集されます。 従量課金インスタンスの統計は含まれていません。 メトリックは、次の式に基づいて計算されます。リザーブドインスタンスが応答する同時リクエストの数 /すべてのリザーブドインスタンスが応答できる同時リクエストの最大数。 メトリック値の範囲は0から1です。 リザーブドインスタンスが応答できる同時リクエストの最大数は、さまざまな管理関数に基づいて計算されます。
  • 1つのインスタンスによって処理される単一のリクエスト: 最大同時実行数=インスタンス数。
  • 1つのインスタンスで処理される複数のリクエスト: 最大同時実行数=インスタンス数 × 1つのインスタンスで同時に処理されるリクエスト数。
スケールインとスケールアウトの値:
  • 値は、現在のメトリック値、スケーリングしきい値、リザーブドインスタンスの数、およびスケーリング係数によって決定されます。
  • 計算原理: システムは、スケールインファクタに基づいてスケールインする。 値の範囲: (0,1) 。 この要素を設定する必要はありません。 スケールインとスケールアウトの値は、次の計算結果の切り上げ整数です。
    • スケールアウト値=(現在のメトリック値 /スケールアウトしきい値) × リザーブドインスタンスの数。
    • スケールイン比= (1-現在のメトリック値 /スケールアウトしきい値) × スケールイン係数。
    • スケールイン値=現在のインスタンス数 × (1-スケールイン比) 。
  • 例: 現在のメトリック値は90% 、スケールアウトしきい値は80% 、リザーブドインスタンス数は100です。 スケールアウト値= (90%/80%) × 100 = 112.5 (113に切り上げ) 。 リザーブドインスタンスの数が113に増えました。
パラメータ設定の例:
  • この例では、service_1という名前のサービスのfunction_1という名前の関数は、ProvisionedConcurrencyUtilizationメトリックに基づいて自動的にスケールインおよびスケールアウトするように構成されています。 スケーリング期間は、2020年11月1日の10:00:00から2020年11月30日の10:00:00に設定します。 同時実行使用率が60% を超えると、リザーブドインスタンスの数は100にスケールアウトできます。 同時実行使用率が60% 未満の場合、リザーブドインスタンスの数は10に拡大できます。
  • {
      "ServiceName": "service_1" 、
      "FunctionName": "function_1" 、
      "Qualifier": "alias_1" 、
      "TargetTrackingPolicies": [
        {
          "名前": "action_1" 、
          "StartTime": "2020-11-01T10:00:00Z" 、
          "EndTime": "2020-11-30T10:00:00Z" 、
          "MetricType": "ProvisionedConcurrencyUtilization" 、
          "MetricTarget": 0.6、
          "MinCapacity": 10、
          "MaxCapacity": 100、
        }
      ]
    }
  • パラメーター
    パラメーター説明スキーマ
    名前スケジュールされた自動スケーリングタスクの名前。String
    StartTime設定が有効になり始めた時刻。 値をUTCで指定します。String
    EndTime設定の有効期限が切れる時刻。 値をUTCで指定します。String
    MetricType追跡されるメトリック: ProvisionedConcurrencyUtilization。String
    MetricTargetメトリックの追跡された値。double
    MinCapacity最小スケールイン値。整数 (int64)
    MaxCapacity最大スケールアウト値。整数 (int64)