跳至內容

如何對 ECS 中的回應時間過長問題進行疑難排解?

1 分的閱讀內容
0

我想要對 Amazon Elastic Container Service (Amazon ECS) 任務的回應時間過長和延遲問題進行疑難排解。

解決方法

檢查您的 Amazon ECS 服務等級指標

較高的 CPU 和記憶體使用率可能會導致 Amazon ECS 任務的回應延遲較高。使用 Amazon CloudWatch 指標檢視服務等級 CPU 和記憶體使用率。如果您啟動了 CloudWatch Container Insights,請檢查容器級 CPU 和記憶體使用率。如果您尚未啟動 Container Insights,請參閱如何設定 CloudWatch Container Insights 來監控我的 Amazon ECS 任務和容器執行個體?

如果您應用程式的容器必須執行 CPU 密集型工作負載,則請升級至包含更多虛擬 CPU (vCPU) 和記憶體的較大任務大小。或者,打開應用程式自動擴展

Amazon EC2 啟動類型中的 Amazon ECS 任務

檢查使用 Amazon EC2 啟動類型的 Amazon ECS 任務的 Amazon Elastic Cloud Compute (Amazon EC2) 執行個體的 CPU 和記憶體使用率。

使用 CloudWatch 指標監控您的 Amazon EC2 執行個體的網路效能。如果執行個體網路頻寬超出可用執行個體基準頻寬,則使用具有高基準頻寬的較大執行個體類型。

使用** CPUUtilization** CloudWatch 指標來監控執行個體 CPU 使用率。另外,登入您的執行個體來檢查記憶體使用率。如果 CPU 或記憶體使用率較高,則向叢集新增更多執行個體以在多個執行個體之間分發任務。或者,將執行個體變更為更大的執行個體類型。

檢查應用程式日誌以確定下游服務是否存在較高的回應延遲。最佳做法是啟動 AWS X-Ray 來對延遲問題進行疑難排解

測量回應延遲

如果 Amazon ECS 服務位於 Application Load Balancer 後面,則使用 TargetResponseTime CloudWatch 指標來測量回應時間。此指標提供透過 Application Load Balancer 路由請求的平均回應時間。如果該值很高,則後端應用程式或基礎架構可能會出現延遲。

若要直接從容器測量回應延遲,請登入應用程式容器。對於 Amazon EC2 啟動類型任務,請執行 Docker exec -it container id 命令登入容器。對於使用 Fargate 啟動類型的任務,請使用 ECS exec 登入容器。

然後,執行以下命令來測量回應延遲:

curl -kso /dev/null -w "\n===============\n
| Connect: %{time_connect}\n
| App connect: %{time_appconnect}\n
| Pre-transfer: %{time_pretransfer}\n
| Time to First Byte (TTFB): %{time_starttransfer}\n
| Total: %{time_total}\n
| HTTP Code: %{http_code}\n===============\n" http://localhost:port/endpoint

注意:port (連接埠) 替換為您的容器連接埠,將 endpoint (端點) 替換為您的端點。

在上述命令的輸出中,第一個位元組時間 (TTFB) 欄位會顯示第一個位元組到達所需的時間。輸出還包括伺服器處理時間。如果處理時間較長,則應用程式需要更長的時間來處理請求。

相關資訊

如何對 AWS Fargate 上 Amazon ECS 任務的高 CPU 使用率問題進行疑難排解?

如何監控 Fargate 上 Amazon ECS 任務的高記憶體使用率?

如何計算 EC2 執行個體的總網路使用量,並確定哪一個執行個體在日期範圍內使用的頻寬最多?

AWS 官方已更新 10 個月前