什麼是出訪串連池?
基於HTTP協議的特性,同一個長串連上資料是串列傳輸的,請求方發送完第一個請求後必須等到應答後才能發第二個請求。出訪串連池是指API Gateway到後端服務的串連池。
若購買的專享執行個體規格為api.s1.small,最大出訪串連池大小為1200,如果後端服務每個請求的應答時間在1秒時,那麼這個執行個體最大支援的出訪RPS是1200,超過1200後,如果請求進入API Gateway,後端串連池被佔滿,API Gateway會讓請求進入一個等待隊列,等待500毫秒後如果仍然拿不到串連資源,就會給用戶端返回Backend service connect failed `Connection lease request time out`。這時候我們可以通過配置出訪串連池警示來及時發現出訪串連池不夠用的問題,並及時處理。
前提條件
已經配置記錄API Gateway的日誌,文檔可參考通過Log Service查看API調用日誌。
配置出訪串連池警示
Log Service支援根據定義的檢查頻率、觸發條件等配置警示規則,並在滿足條件時觸發警示。所以我們可以使用Log Service來進行警示。
當出訪串連池不夠用時,API Gateway就會給用戶端返回Backend service connect failed `Connection lease request time out`。這個報錯記錄在日誌中的errorMessage欄位中,我們可以根據這個報錯資訊來配置警示,配置文檔可參考快速設定日誌警示。
其中步驟二的查詢統計對話方塊中,可以根據執行個體ID,errorId以及報錯資訊來配置警示,查詢和分析語句設定如下。
instanceId: apigateway-cn-XXXXX and errorId : D504CO and '`Connection lease request time out`'
出訪串連池不夠用如何解決
升級執行個體規格。
若是共用執行個體/Serverless執行個體,可以先購買專享執行個體,再通過API分組的歸屬執行個體遷移的方式將分組遷移至專享執行個體。
若是專享執行個體,可以直接在控制台對執行個體進行升配操作,文檔參考執行個體變更配置。
觀察日誌中的serviceLatency(單位ms),這個欄位記錄的是後端服務回應時間,也就是API Gateway給後端發送請求到收到後端應答的耗時(網關給後端服務發出請求開始,網關從網卡中讀取到後端服務應答的最後一個包截止)。若後端服務響應較慢,也會一定程度上導致出訪串連池不夠用。建議使用者對serviceLatency值也配置監控警示,當serviceLatency值普遍較大時,可以及時最佳化後端響應速度,避免出現出訪串連池不夠用的情況。