全部產品
Search
文件中心

Function Compute:遇502報錯且報錯資訊為Process exited unexpectedly before completing request怎麼辦?

更新時間:Jul 06, 2024

可能原因

HTTP Server串連主動關閉,主動關閉的可能原因如下:
  • 串連未設定Keep-Alive。
  • 空閑一段時間後,主動關閉。
  • 讀寫逾時或錯誤時關閉。

解決方案

當前的Function Compute使用Keep-Alive連續訪問Custom Container內的HTTP Server,對於等冪請求例如GET、HEAD、OPTIONS或TRACE等,在串連失敗時例如EOFconnection reset by peer等,會主動重試。但對於非等冪請求例如POST、PATCH等,在串連失敗時會直接返回502報錯。為避免502報錯,Custom Container的服務端需要設定以下兩類參數:
  • 將串連模式Connection設定為Keep-Alive。
  • 關閉IDLE逾時時間或將IDLE逾時時間設定為15分鐘以上。

對於不同的HTTP Server架構以上兩種參數的配置方式可能會不一樣,例如GoFrame架構,不僅需要將SetIdletimeout設定為0,還需要設定ReadTimeoutpython uvicorn參數,python uvicorn還需要在命令列中設定--timeout-keep-alive等參數。建議您自行驗證,對於Keep-Alive模式的HTTP用戶端在進行稀疏性調用時,是否會觸發HTTP server主動關閉串連。

可能原因

函數本身原因導致進程退出,可能原因如下:
  • 主動調用exit等介面退出。
  • 運行過程中出現的exception未被捕獲。

解決方案

您可以按照以下方式檢查您的代碼:
  • 檢查您的代碼中是否存在主動退出的邏輯。
  • 在運行環境進程頂層增加異常捕獲或覆蓋,避免發生exception時進程退出。