問題描述
API呼叫過程中,一旦遇到資料量大的場景下,返回504 超時的錯誤。
注意: 請求首先達到Application Gateway, 然後轉發到後端的App Service服務中。
問題解答
這可能與應用程式閘道器的“響應快取區”配置有關:
- 應用程式閘道器的響應緩衝區可以收集後端伺服器傳送的全部或部分響應資料包,然後再將它們傳送給客戶端。 預設在應用程式閘道器上啟用響應緩衝,這對於適應緩慢的客戶端很有用。
- 此設定可保護後端 TCP 連線,因為它們可以在應用程式閘道器收到完整響應後關閉,並根據客戶端的處理速度工作。
然而從客戶端的角度,由於資料包被閘道器快取而遲遲沒有收到響應,即可能出現504超時的問題。
透過如下Azure CLI指令將該閘道器的響應快取區配置關閉,針對大資料量的請求客戶端就可以正常且及時的得到響應,避免了連結閒置太久而報錯504超時。
Azure CLI指令:
az network application-gateway update --name <gw-name> --resource-group <rg-name> --set globalConfiguration.enableResponseBuffering=false
參考資料
配置請求和響應代理緩衝區 :https://learn.microsoft.com/zh-cn/azure/application-gateway/proxy-buffers
如何更改緩衝區設定:https://learn.microsoft.com/zh-cn/azure/application-gateway/proxy-buffers#how-to-change-the-buffer-settings
【END】