部署後應用程式疑難排解

在 AWS 上部署應用程式

Dunieski Otano

Amazon Web Services Solutions Architect

Task timed out

  • 函式偶爾失敗
  • 日誌顯示「Task timed out」
  • 失敗樣貌指向真正原因

碼錶與錯誤日誌行,顯示一個逾時的 Lambda 工作

在 AWS 上部署應用程式

常見 Lambda 失敗樣貌

2x2 網格顯示 Lambda 失敗樣貌:Timeout 與 task-timed-out 日誌、Throttled 與 TooManyRequestsException、Access Denied 與 AccessDeniedException、Out of Memory 與 signal-killed 錯誤

  • Timeout:"Task timed out after N seconds"
  • Throttle:TooManyRequestsException
  • IAM denial:AccessDenied,not authorized
  • Out of memory:執行途中被終止
在 AWS 上部署應用程式

函式失敗的第一步應對

  • 在變更前先讀錯誤訊息
  • 對應到已知樣貌
  • 逾時時檢查下游呼叫延遲
  • 一次只改一項,重新測試

疑難排解決策循環:讀錯誤訊息、對應已知樣貌、檢查下游延遲、只改一項再重測

在 AWS 上部署應用程式

CloudWatch Logs Insights

Logs Insights 查詢用 filter 縮小範圍,用 stats 聚合。以下統計每分鐘的錯誤數:

fields @timestamp, @message
| filter level = "ERROR"
| stats count() as errors by bin(1m)
| sort errors desc
在 AWS 上部署應用程式

從雙方偵錯整合失敗

  • 失敗常發生在服務之間
  • 要讀呼叫端被呼叫端的日誌
  • request IDtrace ID 對齊
  • 中間的落差揭露斷點

呼叫端與被呼叫端日誌以 request ID 並排對齊,中間的落差標示為整合斷點,請求在此中止

在 AWS 上部署應用程式

健康檢查與就緒探針

負載平衡器將流量導向健康目標(綠色勾),失敗目標在連續健檢失敗後被移出輪轉

  • Health check:執行個體是否存活且可服務?
  • 負載平衡器僅路由到健康目標
  • Readiness:是否已就緒可接流量?
  • 檢查失敗會將目標移出輪轉
在 AWS 上部署應用程式

疑難排解作戰手冊

  • 錯誤並對應樣貌
  • 用 Logs Insights 日誌以縮定範圍
  • 以 request 或 trace ID 關聯雙方
  • 一次只改一項並驗證

四步驟疑難排解:讀錯誤並對應樣貌、用 Insights 查日誌、以 trace ID 關聯雙方、一次只改一項並驗證

在 AWS 上部署應用程式

一起來練習吧!

在 AWS 上部署應用程式

Preparing Video For Download...