Function Computeは、インスタンスレベルのイベントを提供します。 インスタンスレベルのイベントを使用して、インスタンスの作成と破棄のプロセス、各ステップの実行時点など、関数インスタンスのライフサイクルを把握できます。 このトピックでは、関数インスタンスのライフサイクルと、インスタンスレベルのイベントの定義、変更プロセス、タイプ、およびクエリ方法について説明します。
関数インスタンスのライフサイクル
関数インスタンスは、呼び出し回数に基づいて動的に作成および破棄されます。 各関数インスタンスのライフサイクルには、Creating、Running、Destroyingフェーズが含まれます。 次の図は、関数インスタンスのライフサイクルを示しています。
作成中
Function Computeは、関数設定に基づいてインスタンスを作成します。 作成フェーズでは、コードまたはレイヤーの読み込み (またはイメージプル) 、インスタンスの起動、Initializerフックの実行が行われます。 次の図は、Function Computeがインスタンスを作成する方法を示しています。
インスタンスは次のシナリオで作成されます。
自動スケーリング: 既存のインスタンスが完全にロードされ、新しいリクエストを処理できない場合、Function Computeは1つ以上のインスタンスを作成します。 この場合、コールドスタートが発生します。 詳細については、「コールドスタートの待ち時間を短縮するためのベストプラクティス」をご参照ください。
プロビジョニングされた設定の調整: 関数の自動スケーリングルールで特定の数のプロビジョニングされたインスタンスを指定した場合、function Computeはリクエストが送信される前にプロビジョニングされたインスタンスを作成し、インスタンスのコールドスタートを防ぎます。 詳細については、「プロビジョニングされたインスタンスと自動スケーリングルールの設定」をご参照ください。
Running
Function Computeは関数のハンドラーを呼び出してリクエストを処理します。 関数のインスタンス同時実行性を設定して、リクエスト処理のポリシーを変更できます。 PreFreezeフックを使用してプログラミングモデルを拡張することもできます。 詳細については、「拡張機能」をご参照ください。 インスタンスの同時実行性の詳細については、「インスタンスの同時実行性の設定」をご参照ください。
インスタンスがリクエストを処理し、フックを実行した場合にのみ課金されます。 インスタンスがリクエストを処理しなくなった場合、インスタンスは凍結されます。
破壊する
このフェーズでは、インスタンスが破棄されます。 PreStopフックを使用してプログラミングモデルを拡張できます。
次のシナリオでは、インスタンスが破棄されます。
アイドル状態のインスタンス: オンデマンドインスタンスが特定の期間リクエストを受信しない場合、Function Computeはインスタンスを自動的に回収します。
プロビジョニングされた設定の調整: 関数の自動スケーリングルールでプロビジョニングされたインスタンスの数を減らすと、function Computeは過剰にプロビジョニングされたインスタンスを破棄します。
インスタンス例外: 作成中または実行中にインスタンスに例外が発生した場合、Function Computeはインスタンスを破棄します。
インスタンスレベルのイベントとは
イベントは、リソースのステータスの変更を記述するデータレコードです。 インスタンスは、リクエストを実行するためにFunction Computeによって割り当てられるコアリソースです。 Function Computeは、リクエストを処理するインスタンスを動的に作成および破棄します。 Function Computeでは、イベントはインスタンスのステータスの重要な変更を記述します。 インスタンスの詳細ページで、インスタンスのイベントを表示できます。 インスタンスレベルのイベントを使用すると、インスタンスのライフサイクルを観察し、実行例外を特定できます。
イベントの状態と変更プロセス
イベントは、リソースのステータスが変化する時点をマークします。 各イベントは、少なくとも1つの定義可能なプレ状態およびポスト状態に関連付けられる。
次の図は、関数インスタンスと関連イベントのステータス変更を示しています。
以下の項目は、状態を説明する。 ステータス変更イベントの詳細については、「イベントタイプ」をご参照ください。
作成中: インスタンスが作成中です。 Function Computeは、関数のリクエスト数に基づいてインスタンスを動的に作成します。 この状態は、以下の子状態を含む。
ImagePulling: あなたのイメージは引っ張られています。 この状態は、カスタムコンテナランタイムに適用されます。
CodePreparing: コードパッケージがプルされ、マウントされています。
LayerPreparing: レイヤーが引っ張られてマウントされています。
RuntimeInitializing: インスタンスが起動中で、ヘルスチェック中です。
Initializing: 関数のInitializerフックが実行中です。
完了: インスタンスが作成されました。
Failed: インスタンスの作成に失敗しました。
Running: インスタンスは実行中です。 インスタンスがこの状態にある場合、インスタンスはリクエストを処理できます。
破棄: インスタンスが破棄されました。 インスタンスは、関数に送信されたリクエストの数に基づいて動的に破棄されます。
エラー: インスタンスはリクエストを期待どおりに処理できず、破棄されようとしています。
イベントタイプ
イベント | [重大度] | 説明 | 解決策 |
インスタンスの作成 fc: インスタンス: 作成中 | 正常 | Function Computeは、リクエストを処理するインスタンスを作成しています。 | 非該当 |
コードが正常に読み込まれました。 fc: インスタンス: PrepareCodeSuccess | 正常 | Function Computeはコードパッケージをプルし、パッケージをインスタンスにマウントしました。 説明 Function Computeは、コードパッケージの読み込みプロセスを最適化します。 ローディングプロセスは、特定の条件下で短時間で完了することができます。 | 非該当 |
コードの読み込みに失敗しました。 fc: インスタンス: PrepareCodeFailed | 警告 | Function Computeは、コードパッケージのプルとマウントに失敗しました。 | テクニカルサポートのためにDingTalkグループ (ID: 11721331) に参加します。 |
レイヤーが正常にロードされました。 fc: インスタンス: PrepareLayerSuccess | 正常 | Function Computeはレイヤーをプルし、レイヤーをインスタンスにマウントしました。 説明 Function Computeは、レイヤーの読み込みプロセスを最適化します。 レイヤのローディングは、特定の条件下で短時間で完了することができ、コードローディングと一緒に実行することができる。 | 非該当 |
レイヤーの読み込みに失敗しました。 fc: インスタンス: PrepareLayerFailed | 警告 | Function Computeがレイヤーのプルとマウントに失敗しました。 | テクニカルサポートのためにDingTalkグループ (ID: 11721331) に参加します。 |
イメージが正常に読み込まれました。 fc: インスタンス: PullImageSuccess | 正常 | Function Computeは、カスタムコンテナランタイムのインスタンスイメージを取得しました。 | 非該当 |
イメージの読み込みに失敗しました。 fc: インスタンス: PullImageFailed | 警告 | Function Computeは、カスタムコンテナランタイムのインスタンスイメージをプルできませんでした。 | テクニカルサポートのためにDingTalkグループ (ID: 11721331) に参加します。 |
インスタンスが正常に開始されました。 fc: インスタンス: RuntimeInitializationSuccess | 正常 | Function Computeはインスタンスを起動し、ヘルスチェックを完了しました。 | 非該当 |
インスタンスの起動に失敗しました。 fc: インスタンス: RuntimeInitializationFailed | 警告 | Function Computeは、インスタンスの起動後にインスタンスがヘルスチェックに失敗したことを検出します。 | この問題を解決するには、インスタンスログを表示し、カスタムランタイムのエラー処理方法を使用することを推奨します。 カスタムランタイムエラーのトラブルシューティング方法の詳細については、「エラー処理」をご参照ください。 |
Initializerフックが正常に実行されました。 fc: インスタンス: InitializationSuccess | 正常 | Initializerフックが正常に実行されました。 | 非該当 |
Initializerフックの実行に失敗しました。 fc: インスタンス: InitializationFailed | 警告 | Initializerフックの実行に失敗しました。 | リクエストログに基づいて、Initializerフックのロジックを調整することを推奨します。 |
インスタンスは正常に作成されました。 fc: インスタンス: CreateSuccess | 正常 | インスタンスが作成され、リクエストを処理しようとしています。 | 非該当 |
インスタンスの作成に失敗しました。 fc: インスタンス: CreateFailed | 警告 | インスタンスの作成に失敗し、破棄されます。 | 非該当 |
インスタンスが破棄されました。 fc: インスタンス: DestroySuccess | 正常 | インスタンスが破壊されました。 | 非該当 |
インスタンスレベルのイベントの照会
インスタンスレベルのメトリックを有効にすると、Function Computeはインスタンスレベルのイベントに関する情報を収集します。 情報は、ロギング機能を設定したときに選択したLogstoreに送信されます。 次のセクションでは、インスタンスレベルのイベントに関する情報を表示する方法について説明します。 インスタンスレベルメトリックを有効にする方法の詳細については、「インスタンスレベルメトリックの設定」をご参照ください。
Function Computeコンソールでのインスタンスレベルのイベントの表示
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
[関数] ページで、管理する関数の名前をクリックします。 関数の詳細ページで、 を選択します。
Function Computeコンソールでのインスタンスレベルのイベントの表示
イベントを表示するインスタンスのIDをクリックします。 インスタンス詳細パネルで、インスタンスレベルのイベントを表示します。
Simple Log Serviceコンソールでの生のイベントログの表示
目的のリクエストを見つけ、[操作] 列の [詳細ログ] をクリックして、[Simple Log Serviceコンソール] の生ログページに移動します。 このページでは、トピック名でログをフィルタリングできます。 トピック名は
FCInstanceEvents:<your-service-name>/<your-function-name>
形式です。