天天看點

【Azure 應用服務】調用Azure Function經常提示逾時的分析

問題描述

Azure Data Factory 通過 Pipeline 調用Azure Function Http Trigger時遇到傳回錯誤” 500 - The request timed out.”

問題分析

通過Azure Function的進階工具(Kudu) 檢視Function 傳回500錯誤,原因是由于達到了230秒的響應請求的時間。230 秒是 HTTP 觸發的函數在響應請求時需要的最長時間,這起因于 Azure 負載均衡器的預設空閑逾時,在Azure平台中,這個逾時時間是無法修改的。

出現請求執行230秒以及以上的時間,是因為函數中處理的業務遇見了大檔案操作, 對于這種處理時間較長的情況,建議考慮使用 Durable Functions 異步模式 或 延遲實際工作并傳回即時響應。

  • Durable Function的異步操作:可以滿足長時間運作的操作,當用戶端發生請求後觸發啟動業務流程協調程式,目标函數會傳回Http 202,其中包含值為“statusQueryGetUri”的 Location 标頭。用戶端輪詢 Location 标頭中的 URL。 用戶端會繼續看到包含 Location 标頭的 HTTP 202 響應。執行個體完成或失敗後,Location 标頭中的終結點傳回 HTTP 200。
【Azure 應用服務】調用Azure Function經常提示逾時的分析

參考資料

函數應用逾時:https://docs.azure.cn/zh-cn/azure-functions/functions-scale#function-app-timeout-duration

Durable Function異步模式:https://docs.azure.cn/zh-cn/azure-functions/durable/durable-functions-overview?tabs=csharp#pattern-3-async-http-apis

當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!

繼續閱讀