Function Computeは、インスタンスレベルのイベントを提供します。これは、インスタンスの作成と破棄のプロセス、および各ステップの実行時など、関数インスタンスのライフサイクルを理解するのに役立ちます。 このトピックでは、関数インスタンスのライフサイクル、およびインスタンスレベルのイベントの定義、変更プロセス、タイプ、およびクエリ方法について説明します。
インスタンスライフサイクル

前の図に示すように、Function Computeインスタンスのライフサイクルには、作成、呼び出し、および破棄フェーズが含まれます。
右上の
このフェーズでは、Function Computeが次のタスクを順番に実行します。
インスタンスを作成します。
ランタイムを初期化します。
Initフックを実行します。
プロビジョニング済みインスタンスを使用する場合、Function Computeは関数インスタンスを割り当て、プロビジョニング済みインスタンスを設定した直後に
作成プロセスを実行します。 関数呼び出しはすぐには開始できません。 したがって、ランタイム初期化、Initフック実行、および呼び出しフェーズの間に長い時間間隔が存在する可能性があります。オンデマンドインスタンスを使用している場合、Function Computeはリクエストが送信されるとすぐに
作成プロセスを実行します。 関数にInitフックが設定されている場合、Initフックの実行後にInvokeプロセスが実行されます。関数インスタンスの場合、関数に設定されたInitフックは1回だけ実行されます。 実行に失敗した場合、別の関数インスタンスが
Initプロセスを実行するために割り当てられます。Initフックが失敗したインスタンスは破棄されます。呼び出し
デフォルトでは、Function Computeの標準ランタイムで実行されるインスタンスは、一度に1つのリクエストしか実行できません。 カスタムランタイムおよびカスタムコンテナランタイムで実行されるインスタンスは、一度に複数のリクエストを実行できます。 インスタンスの同時実行性を1より大きい値に設定して、1つのインスタンスが一度に複数のリクエストを実行できるようにすることができます。 詳細については、「web関数の作成」をご参照ください。
破壊する
このフェーズは、関数インスタンスが一定期間呼び出しを受信しない場合にトリガーされます。 このフェーズでは、Function Computeが最初にPreStopフックを実行します。 PreStopフックでクリーンアップタスクを実行できます。
インスタンス凍結メカニズム
Function Computeは、呼び出しが一定期間開始されない場合にインスタンスを凍結し、新しいリクエストが送信される場合にインスタンスを凍結解除します。 次の図にプロセスを示します。

次のシナリオでは、インスタンスが凍結されます。
インスタンスは初期化され、呼び出しはまだ行われません。
インスタンスはリクエストを処理するために呼び出され、後続のリクエストはすぐには送信されません。
呼び出しが完了すると、Function Computeは関数インスタンスをフリーズします。 この場合、プログラム内のバックグラウンドプロセス、スレッド、およびコルーチンは引き続き実行できず、非同期ログの書き込みに失敗する可能性があります。
アイドルモード機能が有効になっていないプロビジョニングされたインスタンスは、リクエストを処理していないときはフリーズしません。
インスタンスレベルのイベントとは
イベントは、リソースのステータスの変更を記述するデータレコードです。 インスタンスは、リクエストを実行するためにFunction Computeによって割り当てられるコアリソースのセットです。 Function Computeは、リクエストを処理するインスタンスを動的に作成および破棄します。 インスタンスの状態の変更は、Function Computeのインスタンスレベルのイベントです。 インスタンスの詳細ページで、インスタンスのイベントを表示できます。 インスタンスレベルのイベントを使用すると、インスタンスのライフサイクルを表示し、異常なインスタンスによって発生したリクエスト実行例外を特定できます。
イベントの状態と変更プロセス
イベントは、リソースの状態が変化する時点をマークします。 各イベントは、少なくとも1つの定義可能な先行状態および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グループ64970014484に参加して、テクニカルサポートを行います。 |
fc: インスタンス: PrepareLayerSuccess | 正常 | Function Computeがレイヤーをプルし、インスタンスにマウントしました。 説明 Function Computeは、レイヤーの読み込みプロセスを最適化します。 レイヤのローディングは、特定の条件下で短時間で完了することができ、コードローディングと一緒に実行することができる。 | 非該当 |
fc: インスタンス: PrepareLayerFailed | 警告 | Function Computeはレイヤーのプルとマウントに失敗します。 | DingTalkグループ64970014484に参加して、テクニカルサポートを行います。 |
fc: インスタンス: PullImageSuccess | 正常 | Function Computeは、カスタムコンテナランタイムで実行される関数インスタンスのイメージを取得しました。 | 非該当 |
fc: インスタンス: PullImageFailed | 警告 | Function Computeは、カスタムコンテナランタイムで実行される関数インスタンスのイメージをプルできません。 | DingTalkグループ64970014484に参加して、テクニカルサポートを行います。 |
fc: インスタンス: RuntimeInitializationSuccess | 正常 | Function Computeがインスタンスの起動に成功し、ヘルスチェックが完了しました。 | 非該当 |
fc: インスタンス: RuntimeInitializationFailed | 警告 | Function Computeは、インスタンスの起動後にヘルスチェックに失敗したことを検出します。 | この問題を解決するには、インスタンスログを表示し、カスタムランタイムでエラー処理の方法を使用することを推奨します。 カスタムランタイムエラーのトラブルシューティング方法の詳細については、「エラー処理」をご参照ください。 |
fc: インスタンス: InitializationSuccess | 正常 | Initializerフックが正常に実行されました。 | 非該当 |
fc: インスタンス: InitializationFailed | 警告 | Initializerフックの実行に失敗しました。 | リクエストログに基づいて、Initializerフックのロジックを調整することを推奨します。 |
fc: インスタンス: CreateSuccess | 正常 | インスタンスが作成され、リクエストを処理しようとしています。 | 非該当 |
fc: インスタンス: CreateFailed | 警告 | インスタンスの作成に失敗し、破棄されます。 | 非該当 |
fc: インスタンス: DestroySuccess | 正常 | インスタンスが破壊されました。 | 非該当 |
インスタンスレベルのイベントの照会
インスタンスレベルのメトリックを有効にすると、Function Computeはインスタンスに関するイベント情報を収集します。 情報は、ログの設定時に指定したLogstoreに配信されます。 インスタンスレベルのメトリックを有効にする方法の詳細については、「インスタンスレベルのメトリックの収集の有効化」をご参照ください。
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [関数] ページで、管理する関数をクリックします。
関数の詳細ページで、ログタブをクリックし、呼び出しリクエストタブをクリックします。
Function Computeコンソールでのインスタンスイベントの表示
イベントを表示するインスタンスのIDをクリックします。 インスタンス詳細パネルで、インスタンスレベルのイベントを表示します。
Simple Log Serviceコンソールでの生のイベントログの表示
目的のリクエストを見つけて、[操作] 列の [SLSログ] をクリックして、Simple Log Serviceコンソールの生ログページに移動します。 このページでは、トピック名でログをフィルタリングできます。 トピック名の形式は
FCInstanceEvents:/<your-function-name>です。