リクエストが処理された後のログのアップロードやデータの同期といったバックグラウンド非同期タスクには、遅延リリース機能を使用します。この機能は、インスタンスをアクティブな状態に保ち、これらのタスクを完了させることで、インスタンスの早期終了による中断やデータ損失を防ぎます。
この機能を有効にすると、Function Compute は、インスタンスが最後のリクエストを処理した後、設定した遅延リリース期間中、インスタンスを実行し続けます。この期間中、システムはパフォーマンスとコストのバランスを取るために、リソース使用率に基づいてインスタンスの状態を自動的に切り替えます。
アクティブ状態の維持:インスタンスの vCPU 使用率または GPU 使用率 (ストリームプロセッサおよびデコーダー) がシステムのしきい値よりも高い場合、インスタンスはアクティブな状態を維持します。これにより、バックグラウンドタスクの処理を継続できます。
アイドル状態への切り替え:vCPU と GPU の両方の使用率がシステムのしきい値よりも低い場合、インスタンスは自動的にアイドル状態に切り替わり、コストを削減します。
クイックウェイクアップ:アイドル状態のインスタンスは、新しいリクエストを受信すると迅速にウェイクアップします。これにより、ミリ秒単位のホットスタートが提供され、コールドスタートのレイテンシーを回避できます。
遅延リリース期間中にリクエストが到着しない場合、インスタンスは自動的に破棄され、課金は停止します。インスタンスが破棄された後、設定された最小インスタンス数が 0 の場合、コールドスタートが発生します。設定された最小インスタンス数が 0 より大きい場合、コールドスタートをなくすことができます。
遅延リリースソリューションの比較
項目 | 遅延リリース | セッション保持 | 遅延リリース + セッション保持 |
シナリオ | バックグラウンドサービス | 長時間ライフサイクルセッションを持つサービス | バックグラウンドサービスおよび永続的なセッション接続を持つサービス |
インスタンスのキープアライブ期間の制限 | 5 分 ≤ 設定された遅延リリース期間 ≤ 60 分 | 単一インスタンスでの最新のセッション有効期限 | 次の 2 つの期間のうち、長い方:
|
Function Compute でこの機能を設定する方法
注意事項
遅延リリース機能は、リクエストに応じて動的に作成される弾性インスタンスにのみ適用されます。
この機能は、設定された最小インスタンス数には影響しません。最小インスタンス数には独自のライフサイクル管理と課金ルールがあり、遅延リリースの設定による影響は受けません。
ステップ 1: エラスティックインスタンスの遅延リリースを設定する
関数を作成する際に遅延リリース機能を設定するか、既存の関数に対して次の手順で機能を設定できます。
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーでリージョンを選択します。[関数] ページで、対象の関数の名前をクリックします。
タブをクリックし、[詳細設定] の横にある [編集] をクリックします。
[詳細設定] パネルで、[弾性インスタンスの遅延リリース] セクションを展開し、[弾性インスタンスの遅延リリース] スイッチをオンにし、[遅延リリース時間] を設定してから、[デプロイ] をクリックします。
(オプション) ステップ 2: セッション保持を設定する
このトピックでは、HeaderField アフィニティ機能を例として使用します。詳細については、「セッション保持の設定手順」をご参照ください。
ステップ 3: 結果を検証する
対象の関数の詳細ページで、[コード] タブをクリックし、[関数のテスト] をクリックします。
関数が実行された後、[インスタンス] タブをクリックします。インスタンスの [ライフサイクル] を確認し、遅延リリース機能がアクティブであることを確認します。
課金の説明
遅延リリース機能を有効にすると、リクエストに応じて動的に作成されるインスタンスに課金が適用されます。以下に説明する課金ルールは、これらのインスタンスにのみ適用され、設定された最小インスタンス数の課金とは独立しています。
最小インスタンス数:これらのインスタンスは、リクエストの有無にかかわらず永続します。リクエストがない場合はアイドル状態の弾性インスタンスのレートで、リクエストを処理している場合はアクティブな弾性インスタンスのレートで課金されます。
遅延リリースが設定されたインスタンス:リクエストが処理された後、これらのインスタンスは、このトピックで説明されているルールに従って、アクティブ、アイドル、または破棄の状態になります。
シナリオ 1:遅延リリース機能のみが設定されている場合
例
インスタンスの遅延リリース期間は 9 分に設定されています。
課金期間
次の図に示すように、課金はリクエストの実行に基づいて 3 つの期間に分けられます。14 分後、9 分間新しいリクエストが到着しなかったため、インスタンスは破棄されます。
00:00 から 00:05: リクエストの処理中、インスタンスはアクティブなエラスティックインスタンスのレートで課金されます。
00:05 から 00:09:リクエストが処理された後、システムは vCPU または GPU の使用率がシステムのしきい値を超えていることを検出します。インスタンスはアクティブな弾性インスタンスのレートで課金されます。
00:09 から 00:14:リクエストが処理された後、システムは vCPU と GPU の両方の使用率がシステムのしきい値未満であることを検出します。インスタンスはアイドル状態の弾性インスタンスのレートで課金されます。
シナリオ 2:遅延リリースとセッション保持の両機能が設定されている場合
Example
インスタンスの遅延リリース期間は 9 分に設定されています。
HeaderField アフィニティが有効で、セッションアイドル期間は 15 分に設定されています。
このトピックでは、HeaderField アフィニティを例として使用します。セッション保持の種類、特徴、課金の詳細については、「セッション保持の設定」をご参照ください。
課金期間
システムは、インスタンスの遅延リリース期間 (9 分) と HeaderField アフィニティ機能のセッションアイドル期間 (15 分) のうち、長い方である 15 分の期間を使用します。課金は、「シナリオ 1:遅延リリース機能のみが設定されている場合」のシナリオと同様に、リクエストの実行に基づいて 3 つの期間に分けられます。20 分後、新しいリクエストが受信されない場合、インスタンスは破棄されます。