全部產品
Search
文件中心

Function Compute:鏡像啟動加速(ACR個人版)

更新時間:May 07, 2025

容器鏡像相比於程式碼封裝有更好的可移植性和更豐富的工具鏈生態,但其內建的與應用無關的資料極易使鏡像臃腫,GB級鏡像會導致分鐘級冷啟動。開啟鏡像加速後提速約90%,將分鐘級的鏡像拉取縮短至秒級。本文介紹使用ACR個人版實現鏡像啟動加速的使用原理等。

使用原理

對於運行環境為Custom Container且使用阿里雲Container RegistryACR個人版的函數,Function Compute預設為其開啟鏡像啟動加速功能。每次建立或更新該類函數時,Function Compute會扮演服務RAM角色,使用臨時的AccessKey拉取鏡像,並且轉存至Function Compute系統的加速鏡像快取服務中。轉存結束後,函數中的自訂容器鏡像啟動速度將會得到顯著提升。

注意事項

  • 預設支援鏡像加速的地區有華北2(北京)、華北3(張家口)、華東1(杭州)、華東2(上海)、華南1(深圳)、中國香港、新加坡、美國(矽谷)、美國(維吉尼亞)和日本(東京)。

  • 如果您同意使用鏡像加速,則代表您同意並授權Function Compute拉取您倉庫內的鏡像並轉存至Function Compute服務內部的加速快取服務中。鏡像資料將被加密,並且具備網路隔離和身份鑒權,以保證足夠的資料安全性。請確保將鏡像轉存在Function Compute系統內部儲存服務的操作符合您所在機構的安全規範和指導。

  • 建立或更新使用ACR個人版鏡像的函數後,由於轉存鏡像也有一定的時間消耗,在加速鏡像可用之前,該函數在Function Compute控制台禁止使用。加速鏡像通常會在建立或更新函數後5分鐘內完成。

查看鏡像加速準備狀態

您可以通過以下任一方式查看鏡像加速準備狀態,來判斷當前被加速的鏡像是否可用。

  • Function Compute控制台的函數詳情頁面的函數配置頁簽,找到環境資訊地區,即可查看鏡像加速準備狀態,取值如下:

    • 準備中:對應Preparing

    • 可用:對應Ready

    • 失敗:對應Failed

    樣本如下:get_accelerated_image_status

  • 調用GetFunction介面,根據返回的accelerationInfostatus參數判斷當前鏡像加速準備狀態。主要的狀態如下:

    • Preparing:加速正在準備中,這時調用會使用沒有加速效果的原始鏡像。

    • Ready:加速完成,後續函數調用會有加速效果。

    • Failed:加速失敗。

版本控制最佳實務

如果您使用了ACR個人版,更新函數鏡像會觸發新的加速鏡像轉存。在加速鏡像可用前的一段時間內,函數調用會拉取原始鏡像從而失去函數加速運行效果。對此,您可參照以下流程通過管理函數管理版本的方式來體系化地發布函數:

  1. 更新函數,此時會連帶更新服務的LATEST版本。

  2. 等待鏡像加速準備狀態從準備中狀態至可用後,發布一個新的版本。

  3. 將別名切換到新的服務版本。

查看加速效果

樣本專案puppeteer-pdf中提供了一個使用Node.js Express結合Puppeteer將網頁轉換成PDF的樣本。

加速前,端到端耗時66.51s。加速後僅需4.3s,冷啟動時間減少93.5%。範例程式碼如下:

time curl -H "x-fc-invocation-target: 2016-08-15/proxy/CustomContainerDemo/puppeteer-pdf-no-accl" https://$ACCOUNT_ID.$REGION.fc.aliyuncs.com/generate-pdf\?url\=http://example.com -o /tmp/fc-demo-puppeteer-pdf-no-accl.pdf

# Time spent: 0.06s user 0.09s system 0% cpu 1:06.51 total time

# 鏡像加速後冷啟動
curl -H "x-fc-invocation-target: 2016-08-15/proxy/CustomContainerDemo/puppeteer-pdf-accl" https://$ACCOUNT_ID.$REGION.fc.aliyuncs.com/generate-pdf\?url\=http://example.com -o /tmp/fc-demo-puppeteer-pdf-accl.pdf

# Time spent: 0.05s user 0.06s system 0% cpu 4.300 total time
說明

在測試過程中可能存在誤差,請以實際情況為準。