如何對與 Lambda 整合的 API 閘道請求中的高延遲進行疑難排解?

2 分的閱讀內容
0

當我向與 AWS Lambda 函數整合的 Amazon API Gateway API 提出請求時,回應時間很慢。如何確定高延遲的原因?

解決方案

如果與 Lambda 函數整合的 API 端點需要太長時間才能傳送回應給用戶端,則必須解決高延遲問題。檢閱 API Gateway 的指標,以識別導致高延遲的請求/回應流程區段。確定高延遲的原因後,可以設法減少延遲。

篩選 CloudWatch 指標以檢視 API 上的延遲指標

若要識別導致高延遲的請求/回應流程區段,請先執行下列步驟:

  1. 將請求傳送至 API 後,觀察用戶端的延遲。
  2. 注意到整體延遲之後,開啟 Amazon CloudWatch 主控台。在左側導覽窗格中,依次選擇 Metrics (指標) All metrics (全部指標)。在指標搜尋方塊中,輸入 APIGateway。從搜尋結果中,依次選擇 API GatewayApiId
  3. 在 API 清單中,使用 API ID 或 API 名稱篩選指定的 API。篩選之後,勾選 IntegrationLatencyLatency 核取方塊。
    **注意:**API ID 和 API 名稱可從 API Gateway 主控台獲取。
  4. 開啟 Graphed metrics (圖形化指標) 標籤。針對 Statistic (統計),選擇 Maximum (最大值)。針對 Period (期間),選擇 1 minute (1 分鐘)。在圖形上方,選取 Custom (自訂) 時段。選擇用戶端經歷高延遲的時間範圍。
  5. 檢閱 IntegrationLatency 和 Latency 指標。當這些指標具有較高值時,請注意值和時間戳記。這些值可以說明高延遲的原因。

比較指標以識別高延遲的原因

繼續檢閱與請求/回應流程相關的指標,以找出高延遲的原因:

  1. 將 API Gateway Latency 指標與在用戶端觀察到的整體延遲值作比較。
    例如,API 具有 Latency 指標,其最大值約等於用戶端的最大延遲值。這些值表明,請求/回應流程的最大延遲時間為 API Gateway 處理請求所花費的時間。API 閘道處理時間包括將請求傳送至 Lambda、等待 Lambda 回應,以及將回應傳送至用戶端所花費的時間。
  2. 比較 IntegrationLatency 指標與 API 的 Latency 指標。
    例如,IntegrationLatency 指標約等於 Latency 指標。這些值表示,API 的延遲主要是由傳送至 Lambda 的後端請求所致,而後端請求需要較長時間才能回應。IntegrationLatency 指標包括 API Gateway 傳送請求與從後端接收回應的 API Gateway 之間的時間
  3. 相較於 API 的 Latency 指標,當 IntegrationLatency 指標較低時,後端回應時間則很低效。在此案例中,處理 API 請求或回應需要更長的時間。
    例如,在 API 或 API Gateway Lambda 授權器中設定的映射範本可能會造成延遲。
  4. 當 API 的 Latency 指標遠低於用戶端觀察到的延遲時間時,路由可能導致延遲。檢閱用戶端與 API Gateway 之間的路由,以確認是否有任何中繼端點新增延遲。
    例如,私有 VPN 連線或代理伺服器可能會造成延遲。

檢視 Lambda 指標以識別高 IntegrationLatency 的原因

最後,專注於與請求/回應流程相關的 Lambda 指標,以找出高 IntegrationLatency 的原因:

  1. 檢查 Lambda 函數持續時間指標,以確認 Lambda 函數的執行時間是否較長。如果 Lambda 函數的執行時間增加,請檢閱 CloudWatch 日誌以找出導致高延遲的程式碼區段。依預設,Lambda 函數會將 START、END 和 REPORT 陳述式記錄到 CloudWatch 日誌中。在 Lambda 函數程式碼的每個邏輯區段,新增自訂日誌陳述式,以取得詳細的 CloudWatch 日誌。
  2. 如果持續時間指標在用戶端的高延遲期間沒有變更,則確定初始化時間是否增加。Lambda 函數中的初始化時間是指,設定執行環境以處理請求所花費的時間。來自 API Gateway 的請求可能需要新的環境來處理。這會透過 Lambda 來設定。一般而言,Lambda 函數處理常式外部的程式碼會在初始化時間執行。程式碼若需要較長時間才能完成,可能會導致用戶端的整體回應時間延遲。
    注意:初始化時間稱為 INIT 或冷啟動。
  3. 驗證 Lambda 函數日誌中的報告陳述式,以確認初始化時間的持續時間是否有任何增加。若某些請求的初始化時間較高,可能會導致 API Gateway 的 IntegrationLatency 指標值增加。

相關資訊

使用 HTTP API 的指標

Amazon API Gateway 維度和指標

使用 CloudWatch 指標監控 WebSocket API 執行

在 CloudWatch 主控台上檢視指標

Lambda 執行時間環境生命週期

AWS 官方
AWS 官方已更新 1 年前