本文將介紹如何根據應答中返回的errorMessage來排查常見的D504CO。
1、Backend service connect failed `Timeout connecting to 172.X.X.1:80`
問題原因:API網關和后端服務建立連接超時導致的后端連接失敗。
解決方案:
需要檢查您錄入的后端服務地址是否正確;
如果后端服務在 ECS ,請檢查安全組設置,是否可以被外部訪問。請保證安全組可以被API網關的出口IP段訪問。
排查后端服務是否有黑白名單、后端服務應用程序是否啟動、及防火墻是否有攔截;
若后端是VPC類型,鏈路涉及到跨Region或是通過云企業網訪問的IDC機房,則需要配置回程路由,文檔可以參考訪問云服務。
2、Backend service connect failed `Connection is closed`
問題原因:后端服務主動發FIN包關閉連接導致的后端連接失敗。
解決方案:網關在2023年8月對這種場景做了兼容,增加了重試功能,也就是網關收到后端返回的FIN包后會重試一次。若您是2023年8月前購買的專享實例,出現這個報錯后可以工單聯系我們給您升級實例版本。
3、Backend service connect failed `Connection refused`
問題原因:后端服務拒絕了API網關的連接導致的后端連接失敗。
解決方案:需要用戶自行排查后端服務拒絕網關連接的原因。
4、Backend service connect failed `Connection lease request time out`
問題原因:API網關實例后端連接池不夠用導致的后端連接失敗。
解決方案:升級API網關實例。關于實例的選擇可以參考實例類型與選擇指南。
基于HTTP協議的特性,同一個長連接上數據是串行傳輸的,請求方發送完第一個請求后必須等到應答后才能發第二個請求。API網關最大出訪連接池大小可以按照這個原則來估算連接池是否夠用:
出訪連接池是指API網關到后端服務的連接池,若購買的專享實例規格為api.s1.small,最大出訪連接池大小為1200,如果后端服務每個請求的應答時間在1秒時,那么這個實例最大支持的出訪RPS是1200,超過1200后,如果請求進入API網關,后端連接池被占滿,API網關會讓請求進入一個等待隊列,等待500毫秒后如果仍然拿不到連接資源,就會給客戶端返回Backend service connect failed `Connection lease request time out`。