Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何疑難排解 Application Load Balancer TargetResponseTime 指標增加的問題?
我想疑難排解 Application Load Balancer TargetResponseTime 指標增加的問題。
解決方法
TargetResponseTime 相當於 Application Load Balancer 存取日誌中的 target_processing_time 欄位。
下列問題可能會導致 TargetResponseTime 指標增加。
主機處於不健康狀態
若要解決不健康的 Application Load Balancer 目標問題,請參閱如何疑難排解 Application Load Balancer 的運作狀態檢查失敗問題?
後端執行個體因為收到太多請求而無法負荷
檢查 Application Load Balancer 的 RequestCount 和 ActiveConnectionCount Amazon CloudWatch 指標的 Sum (總和) 統計值。如果總和隨著 TargetResponseTime 的增加而增加,則過多的請求可能會使後端執行個體無法負荷。
若要解決此問題,請為後端執行個體設定 Auto Scaling 群組。如需詳細資訊,請參閱教學課程: 設定可擴展且負載平衡的應用程式。
後端執行個體的 CPU 使用率過高
檢查後端執行個體的 CPUUtilization CloudWatch 指標。如果 CPU 使用率過高或使用率激增,請將執行個體升級為較大的執行個體類型。
目標出現錯誤
如果您遇到出現錯誤的目標,請完成下列步驟:
- 啟用負載平衡器的存取日誌。
- 當 TargetResponseTime 較高時,請下載該時間範圍的存取日誌。例如,若要下載 2022-02-01T03:00 至 2022-02-01T03:35 之間的存取日誌,請執行下列命令:
**注意:**用儲存貯體名稱取代 bucket-name,用 AWS 帳戶的 ID 取代 aws-account-id,並用帳戶所在的 AWS 區域取代 region。aws s3 cp s3://bucket-name[/prefix]/AWSLogs/aws-account-id/elasticloadbalancing/region/2022/02/01/ ./alblogs --recursive --exclude "*" --include "*20220201T03[0123]*"
下載存取日誌後,請執行下列命令以分析日誌。
ELB 存取日誌
Elastic Load Balancing (ELB) 存取日誌會採用 .gzip 格式進行壓縮。若要擷取日誌,請執行下列命令:
gzip -dr ./alblogs
最大延遲
若要取得 target_processing_time 的最大延遲,請執行下列其中一項命令。
已壓縮日誌檔案:
zcat \*.log.gz | awk '$7 != -1' | awk 'BEGIN{a=0}{if ($7>0+a) a=$7} END{print a}'
未壓縮日誌檔案:
cat *.log | awk '$7 != -1' | awk 'BEGIN{a=0}{if ($7>0+a) a=$7} END{print a}'
計算請求的數量
若要計算每個目標 target_processing_time ">=N" 秒的請求數量,請使用需求的秒數修改 N。執行下列其中一個命令。
已壓縮日誌檔案:
zcat *.log.gz | awk '{if($7 >= N){print $5}}' | sort | uniq -c
未壓縮日誌檔案:
cat *.log | awk '{if($7 >= N){print $5}}' | sort | uniq -c
範例輸出:
12 10.10.20.111:80 12 10.10.60.163:80 254 10.10.70.7:80 6 10.10.80.109:80 20656 10.3.19.141:80
在先前的範例輸出中,大部分增加的 TargetResponseTime 是由 IP 位址為 10.3.19.141 的目標所導致。在此情況下,請檢查目標的作業系統 (OS) 和 Web 應用程式。
在後端執行個體上執行的 Web 應用程式相依性出現問題
若要識別目標回應的延遲情形,請在目標上執行封包擷取作業。對於 Linux 作業系統,請使用 tcpdump。
若要擷取包含連接埠 TCP/80 上 HTTP 請求和回應的完整傳入和傳出 POST HTTP 傳輸,請執行下列命令:
tcpdump -i any -ns 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x48545450 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x3C21444F'
若要擷取包含連接埠 TCP/80 上 HTTP 請求和回應的完整傳入和傳出 GET HTTP 傳輸,請執行下列命令:
tcpdump -i any -ns 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x48545450 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x3C21444F'
範例輸出:
14:04:12.186593 IP 10.10.30.219.13000 > 10.10.60.10.http: Flags [P.], seq 641705534:641705793, ack 1587610435, win 106, options [nop,nop,TS val 1165674323 ecr 263805247], length 259: HTTP: GET / HTTP/1.1 E..7."@...I. .. < 2..P&?.>^..C...j9...... Ez.S..Y?GET / HTTP/1.1 X-Forwarded-For: 54.66.76.204 X-Forwarded-Proto: http X-Forwarded-Port: 80 Host: labalbinternet-1236602672.ap-southeast-2.elb.amazonaws.com X-Amzn-Trace-Id: Root=1-6254355c-15db4904726649b66a1e47d7 User-Agent: curl/7.79.1 Accept: */* ................
14:04:21.187892 IP 10.10.60.10.http > 10.10.30.219.13000: Flags [P.], seq 1:592, ack 259, win 488, options [nop,nop,TS val 263814250 ecr 1165674323], length 591: HTTP: HTTP/1.1 200 OK E...\.@.@.l. < ...P2.^..C&?.A....qn..... ..|jEz.SHTTP/1.1 200 OK Date: Mon, 11 Apr 2022 14:04:12 GMT Server: Apache/2.4.52 () OpenSSL/1.0.2k-fips X-Powered-By: PHP/7.2.34 Upgrade: h2,h2c Connection: Upgrade Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8 159 PHP file name: /index.php<br> ................
**注意:**在先前的範例輸出中,GET HTTP 在 14:04:12 回應,而且目標在 14:04:21 回應。TargetResponseTime 大約為 9 秒。若要追蹤存取日誌中的記錄,請使用 X-Amzn-Trace-Id: Root。
對於已壓縮日誌檔案,請執行下列命令:
zcat *.log.gz | awk '{if($20 ~ "1-6254355c-15db4904726649b66a1e47d7"){print $6,$7,$8 }}'
對於未壓縮日誌檔案,請執行下列命令:
cat *.log | awk '{if($20 ~ "1-6254355c-15db4904726649b66a1e47d7"){print $6,$7,$8 }}'
範例輸出:
0.008 9.002 0.000
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前