如何對 ELB Classic Load Balancer 的高延遲問題進行疑難排解?

2 分的閱讀內容
0

當我連接到 Elastic Load Balancing (ELB) Classic Load Balancer 時,我遇到高延遲。

簡短描述

Classic Load Balancer 發生高延遲的原因如下:

  • 網路連線問題
  • 傳統 Classic Load Balancer 的組態不正確
  • 後端執行個體的記憶體 (RAM) 使用率高
  • 後端執行個體的 CPU 使用率高
  • 後端執行個體的 Web 服務器配置不正確
  • 在後端執行個體上執行的 Web 應用程式相依性問題,例如外部資料庫或 Amazon Simple Storage Service (Amazon S3) 儲存貯體

解決方法

  1. 疑難排解 Classic Load Balancer 的網路連線問題

  2. 針對您的使用案例設定 Classic Load Balancer

  3. 檢查 Classic Load Balancer 的存取日誌,以判斷哪些後端執行個體經歷高延遲。檢閱 backend_processing_time 以尋找有延遲問題的後端執行個體。
    若要驗證後端執行個體的 Web 應用程式伺服器是否遇到高延遲,請使用 curl 來測量第一個位元組回應:

[ec2-user@ip-192.0.2.0 ~]$ for X in `seq 6`; do curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" http://www.example.com/ -so /dev/null; done  
High Latency sample output:  
HTTPCode=200 TotalTime=2.452  
HTTPCode=200 TotalTime=1.035
Low latency sample output:  
HTTPCode=200 TotalTime=0.515  
HTTPCode=200 TotalTime=0.013
  1. 檢查 Classic Load Balancer 的 Amazon CloudWatch 延遲指標平均統計資料。如果值很高,則後端執行個體或應用程序依賴伺服器存在問題。

5.    檢查延遲指標最大統計資料。如果該值達到或超過閒置逾時值,則要求將逾時,並導致 HTTP 504 錯誤。

  1. 檢查延遲指標度量中的模式。固定間隔的指標尖峰表示後端執行個體因排定工作的額外負荷而造成效能問題。

  2. 檢查 ELB 的 CloudWatch SurgeQueueLength 指標。如果向 Classic Load Balancer 傳送給的請求超過最大值 (1024),則會拒絕要求,且負載平衡器會產生 HTTP 503 錯誤。SpilloverCount 指標的總統計資料會測量拒絕的請求總數。如需詳細資訊,請參閱如何疑難排解 ELB 中的 Classic Load Balancer 容量問題?

  3. 檢查在後端執行個體上執行的 Apache,以檢查記憶體問題。

範例命令:

watch -n 1 "echo -n 'Apache Processes: ' && ps -C apache2 --no-headers | wc -l && free -m"

範例輸出:

Every 1.0s: echo –n 'Apache Processes: ' && ps –C apache2 –no-
headers | wc -1 && free –m
Apache Processes: 27
          total     used     free     shared     buffers     cached
Mem:      8204      7445     758      0          385         4567
-/+ buffers/cache:  2402     5801
Swap:     16383     189      16194

9.    檢查後端執行個體的 CloudWatch CPUUtilization 指標。尋找高 CPU 使用率或 CPU 使用率峰值。對於高 CPU 使用率,請將執行個體升級為較大的執行個體類型。

10.    檢查後端執行個體上 Web 伺服器的 MaxClient 設定。此設定用於定義執行個體可同時提供多少個請求。對於記憶體和 CPU 使用率適當但遇到高延遲的執行個體,請增加 MaxClient 值。

比較 Apache (httpd) 與 MaxClient 設定產生的處理程序數量。如果 Apache 處理程序的數量經常達到 MaxClient 值,請增加該值。

範例命令:

[root@ip-192.0.2.0 conf]# ps aux | grep httpd | wc -l 15

範例輸出:

<IfModule prefork.c>  
StartServers         10  
MinSpareServers      5  
MaxSpareServers      10  
ServerLimit          15  
MaxClients           15  
MaxRequestsPerChild  4000  
</IfModule>

11.    檢查導致後端執行個體出現延遲問題的相依性。

以下是一些可能導致延遲問題的相依性:

  • 共用資料庫、外部資源,例如 S3 儲存貯體
  • 外部資源連線,例如網路位址轉譯 (NAT) 執行個體
  • 遠端 Web Services
  • 代理伺服器

相關資訊

監控 Classic Load Balancer

AWS 官方
AWS 官方已更新 8 個月前