當我對與 AWS Lambda 函數整合的 Amazon API Gateway API 提出請求時,回應時間很慢。我想確定高延遲的原因。
解決方法
如果與 Lambda 函數整合的 API 端點傳送回應給用戶端所需的時間太長,則必須解決高延遲問題。檢閱 API 閘道的測量結果,以識別造成高延遲的請求/回應流程區段。在確定高延遲的原因之後,您可以針對減少延遲進行作為。
篩選 CloudWatch 指標以檢閱 API 上的延遲指標
若要識別造成高延遲的請求/回應流程區段,請先執行下列步驟:
- 向 API 發送請求後,觀察用戶端的延遲。
- 注意到整體延遲後,開啟 Amazon CloudWatch 主控台。在左側導覽窗格中,選擇 Metrics (指標)、All metrics (所有指標)。在指標搜尋方塊中,輸入 APIGateway。從搜尋結果中,選擇 API Gateway (API 閘道)、ApiId。
- 在 API 清單中,使用 API ID 或 API 名稱篩選指定的 API。篩選後,勾選 IntegrationLatency (整合延遲) 和 Latency (延遲) 核取方塊。
注意: API ID 和 API 名稱可從 API 閘道主控台取得。
- 開啟 Graphed metrics (圖表化指標) 索引標籤。對於 Statistic (統計資料),選擇 Maximum (最大值)。對於 Period (期間),選擇 1 minute (1 分鐘)。在圖表上方,選取 Custom (自訂) 時間週期。選擇用戶端經歷高延遲的時間範圍。
- 同時檢閱 IntegrationLatency 和 Latency 指標。請注意這些指標擁有高值時的值和時間戳記。這些值可以解釋導致延遲高的原因。
比較指標以識別高延遲的原因
繼續檢閱與請求/回應流程相關的指標,以尋找高延遲的原因:
- 比較 API 閘道 Latency (延遲) 指標與用戶端觀察到的整體延遲值。
例如,API 具有 Latency (延遲) 指標,其 Maximum (最大值) 大致等於用戶端的 Max Latency (最大延遲) 值。這些值表明請求/回應流程中的最大延遲是 API 閘道處理請求所需的時間。API 閘道處理時間包括傳送請求給 Lambda、等待 Lambda 回應,以及傳送回應給用戶端所需的時間。
- 比較 IntegrationLatency (整合延遲) 指標與 API 的 Latency (延遲) 指標。
例如,IntegrationLatency (整合延遲) 指標大致等於 Latency (延遲) 指標。這些值表示 API 的延遲主要是由傳送到 Lambda 的後端請求所造成,這些請求需要更長時間來回應。IntegrationLatenc (整合延遲) 指標包括 API 閘道傳送請求與 API 閘道接收後端回應之間的時間
- 當 IntegrationLatency (整合延遲) 指標與 API 的 Latency (延遲)指標相比較低時,則後端回應時間很低。在這種情況下,處理 API 請求或回應需要更長時間。
例如,在 API 或 API Gateway Lambda authorizer 中設定的映射範本都可能會造成延遲。
- 當 API 的 Latency (延遲) 指標比用戶端觀察到的延遲要低得多時,路由可是導致延遲的原因。檢閱用戶端與 API 閘道之間的路由,確認是否有任何中間端點增加延遲。
例如,私人 VPN 連線或代理可能會造成延遲。
檢視 Lambda 指標以識別高 IntegrationLatency \的原因
最後,專注於與請求/回應流程相關的 Lambda 指標,以找到高 IntegrationLatency 的原因:
- 檢查 Lambda 函數 Duration (持續時間) 指標,確認 Lambda 函數的執行時間是否更長。如果 Lambda 函數的執行時間增加,請檢閱 CloudWatch 日誌以找到造成高延遲的程式碼區段。根據預設,Lambda 函數會在 CloudWatch 日誌中記錄 START、END 和 REPORT 陳述式。在 Lambda 函數代碼的每個邏輯區段增加自訂日誌陳述式,以獲取詳細的 CloudWatch 日誌。
- 如果在用戶端高延遲期間,Duration (持續時間) 指標沒有變更,請確定初始化時間是否增加。Lambda 函數中的初始化時間是設定執行環境來處理請求所需的時間。來自 API 閘道的請求可能需要新的環境來處理。這是透過 Lambda 所設置。通常,Lambda 函數處理常式之外的程式碼會在初始化時間執行。需較長完成時間的程式碼可能會造成對用戶端的整體回應時間延遲。
注意: 初始化時間稱為 INIT 或冷啟動。
- 藉由驗證 Lambda 函數日誌中的報告陳述式,確認初始化時間的 Duration (持續時間) 是否增加。部分請求的初始化時間較高,可能會造成 API 閘道的 IntegrationLatency (整合延遲) 指標增加。
相關資訊
使用 HTTP API 的指標
Amazon API Gateway 維度和指標
使用 CloudWatch 指標來監控 WebSocket API 執行
在 CloudWatch 主控台上檢視指標
Lambda 執行時期環境生命週期