全部產品
Search
文件中心

Function Compute:執行個體層級事件

更新時間:Mar 15, 2026

Function Compute提供執行個體層級的事件,通過執行個體層級事件您可以瞭解函數執行個體完整的生命週期,包括執行個體構建、銷毀的流程以及其中各步驟發生的時間點。本文介紹函數執行個體的生命週期以及執行個體層級事件的定義、轉移流程、類型和查詢方式。

函數執行個體的生命週期

函數執行個體會根據函數當前的請求調用量動態地按需構建與銷毀,每個函數執行個體的生命週期包括執行個體構建(Creating)請求調用(Invoke)執行個體銷毀(Destroy)三個階段,如下圖所示。

image

執行個體構建(Creating)

執行個體構建是指Function Compute根據您的函數配置為您建立函數執行個體。在執行個體構建階段,Function Compute會按照順序執行以下三項任務:

  1. 執行個體建立(Instance Create),包括載入代碼、層載入或拉取鏡像和啟動執行個體。

  2. 運行時啟動(Runtime Init)。

  3. 執行函數配置的Initializer回調(Init Hook)。更多資訊,請參見Initializer回調

執行個體構建階段示意圖如下所示。

image

執行個體構建一般在以下兩種情況下發生。

  • 彈性擴容

    收到調用請求時,若當前的函數執行個體已經滿載,會構建新的執行個體來處理請求,並立即執行執行個體構建流程,緊接著就會執行請求調用流程。彈性擴容可能會造成冷啟動,解決方案請參見Function Compute冷啟動最佳化最佳實務

  • 最小執行個體數調整

    如果函數設定的最小執行個體數由0變更為≥1的其他值,Function Compute會立即啟動執行個體構建流程。如果當前未收到調用請求,則後續的請求調用流程會與執行個體構建流程相隔較長時間。更多資訊,請參見配置最小執行個體數彈性策略

請求調用(Invoke)

執行個體運行期間,會調用您的函數處理常式以處理來自內外部的函數調用請求。在調用階段,對於Function Compute支援的內建運行時,一個執行個體在同一時間只會處理一個請求;對於自訂運行時或自訂容器運行時,一個執行個體在同一時間可以處理多個請求。您可以通過設定單一實例多並發實現,具體操作,請參見配置單一實例並發度

Function Compute只在實際請求和回調程式執行時計費,在請求以外的時間段內執行個體會被冷凍,因此不計費,詳情請參見計費說明

執行個體銷毀(Destroy)

如果函數執行個體在一段時間內沒有收到任何調用,則觸發此階段。在銷毀階段,Function Compute會先執行PreStop回調方法。您可以在PreStop回調方法中執行一些清理任務。

執行個體銷毀一般在以下三種情況下發生。

  • 執行個體淺休眠(原閑置):如果執行個體在一段時間內沒有收到任何調用請求,Function Compute會自動回收該執行個體。

  • 最小執行個體數調整:當您縮容最小執行個體數時,Function Compute會立即為您銷毀多餘的執行個體。

  • 執行個體異常:如果執行個體在構建或運行階段出現了異常,Function Compute會銷毀該執行個體。

執行個體凍結機制

在沒有調用請求時,Function Compute會將執行個體凍結(Freeze)當新的請求來到時,Function Compute會將執行個體解凍(Thaw)。如下圖所示。

image

執行個體凍結主要發生在以下兩種情況。

  • 執行個體初始化階段完成後,調用階段前。

  • 函數某一次調用階段結束後,下一次調用階段前。

在一次調用階段完成後,Function Compute將凍結函數執行個體,程式中的後台進程、線程或協程無法繼續運行,非同步日誌也可能沒有寫入成功。

什麼是執行個體層級事件

事件是一種描述資源狀態變化的資料記錄。執行個體是Function Compute為執行您的請求而構建的核心資源,Function Compute系統會動態地構建與銷毀執行個體,從而彈性地處理您的請求。Function Compute將您的執行個體發生各個重要狀態變化的時間點定義為各類事件,並支援在執行個體詳情頁面進行可視化展示。通過執行個體層級事件,您不僅可以觀察到執行個體的生命週期,還可以快速定位由執行個體導致的請求執行異常。

事件的相關狀態和轉移流程

事件標記了資源狀態變化的時間點,因此每種事件分別至少與一種可定義的前置狀態和後置狀態相關。

函數執行個體的狀態轉移以及相關事件示意圖如下所示。

image

函數執行個體的狀態如下所示。狀態轉移相關事件的詳細資料,請參見事件類型

  • Creating:您的執行個體正在構建中。執行個體會根據函數當前的請求調用量動態地按需構建,該狀態包含以下子狀態。

    • 鏡像拉取(ImagePulling):正在拉取您的鏡像(Custom Container運行環境)。

    • 代碼載入(CodePreparing):正在拉取並掛載您的程式碼封裝。

    • 層載入(LayerPreparing):正在拉取並掛載您的層。

    • 運行時啟動(RuntimeInitializing):正在啟動您的執行個體並進行健全狀態檢查。

    • Initializer執行(Initializing):正在執行您的Initializer回調程式。

    • 構建完成(Finished):您的執行個體構建完成。

    • 構建失敗(Failed):您的執行個體構建失敗。

  • Running:您的執行個體正在運行中。此狀態下的執行個體會處理函數的調用請求。

  • Destroyed:您的執行個體已經被銷毀。執行個體會根據函數當前的請求調用量動態地按需銷毀。

  • Error:您的執行個體當前不能正常處理調用請求,即將被銷毀。

事件類型

事件名稱

事件等級

事件含義

解決方案

執行個體構建中

fc:Instance:Creating

Normal

Function Compute開始為您的請求構建所需執行個體。

不涉及。

代碼載入就緒

fc:Instance:PrepareCodeSuccess

Normal

Function Compute成功地將您的程式碼封裝拉取並掛載到執行個體中。

說明

Function Compute針對程式碼封裝載入過程進行了多種最佳化,部分條件下,載入時間非常短。

不涉及。

代碼載入失敗

fc:Instance:PrepareCodeFailed

Warning

Function Compute未能成功地將您的程式碼封裝拉取並掛載到執行個體中。

請加入DingTalk使用者群(DingTalk群號:64970014484)擷取支援人員。

層載入就緒

fc:Instance:PrepareLayerSuccess

Normal

Function Compute成功地將層拉取並掛載到執行個體中。

說明

Function Compute針對層載入過程進行了多種最佳化,部分條件下用時極短,且與代碼載入同時進行。

不涉及。

層載入失敗

fc:Instance:PrepareLayerFailed

Warning

Function Compute未能成功地將層拉取並掛載到執行個體中。

請加入DingTalk使用者群(DingTalk群號:64970014484)擷取支援人員。

鏡像準備就緒

fc:Instance:PullImageSuccess

Normal

Function Compute已成功拉取您的Custom Container執行個體鏡像。

不涉及。

鏡像準備失敗

fc:Instance:PullImageFailed

Warning

Function Compute未能成功拉取您的Custom Container執行個體鏡像。

請加入DingTalk使用者群(DingTalk群號:64970014484)擷取支援人員。

執行個體啟動成功

fc:Instance:RuntimeInitializationSuccess

Normal

Function Compute已成功啟動您的執行個體並完成了健全狀態檢查。

不涉及。

執行個體啟動失敗

fc:Instance:RuntimeInitializationFailed

Warning

Function Compute發現您的執行個體在啟動後未能通過健全狀態檢查。

建議您參考執行個體日誌並結合Custom Runtime錯誤排查方法解決該問題。關於Custom Runtime錯誤排查,請參見錯誤處理

Initializer執行成功

fc:Instance:InitializationSuccess

Normal

您的Initializer回調程式執行成功。

不涉及。

Initializer執行失敗

fc:Instance:InitializationFailed

Warning

您的Initializer回調程式執行失敗。

建議您根據請求日誌調整Initializer回調程式的邏輯。

執行個體構建成功

fc:Instance:CreateSuccess

Normal

您的執行個體構建成功,即將開始處理調用請求。

不涉及。

執行個體構建失敗

fc:Instance:CreateFailed

Warning

您的執行個體構建失敗,即將被銷毀。

不涉及。

執行個體已銷毀

fc:Instance:DestroySuccess

Normal

您的執行個體已經被銷毀。

不涉及。

查詢執行個體層級事件

開啟執行個體層級指標後,Function Compute會收集執行個體的事件資訊,該資訊將被投遞到您在配置日誌時選擇的日誌倉庫中。關於開啟執行個體層級指標的具體操作,請參見配置執行個體層級指標

  1. 登入Function Compute控制台,在左側導覽列,選擇函数管理 > 函数

  2. 在頂部功能表列,選擇地區,然後在函数頁面,單擊目標函數。

  3. 在函數詳情頁面,選擇日志頁簽,然後選擇调用请求頁簽。

    • 通過Function Compute控制台查看執行個體事件

      單擊目標請求的執行個體ID,在執行個體詳情面板,查看執行個體層級事件。

    • 通過Log Service控制台查看原始事件記錄

      單擊目標請求右側操作列的高级日志,頁面跳轉至Log Service控制台的原始日誌頁面,根據Topic名稱篩選日誌。Topic名稱格式為FCInstanceEvents:/<functionname>