ALB具備超強彈性及大規模應用程式層流量處理能力。實際業務情境中如您有ALB壓力測試需求,可參考本文進行壓力測試。
壓測拓撲
您可參考下圖進行測試環境設計。
壓測方法
壓測指標說明
ALB有四個關鍵計量:建立串連數、並發串連數和處理資料量(請求和響應)、每秒請求數。每一個指標的壓測方法不一樣。
壓測建立串連數指標建議使用短串連,用於測試負載平衡服務與後端伺服器的建立處理能力。
建議使用簡單的心跳服務測試,減少過多的頻寬消耗帶來的影響。使用短串連測試時,需要注意用戶端連接埠不足的問題。
壓測並發串連數指標建議使用長串連,用於測試負載平衡服務與後端伺服器的並發處理能力。
每一條長串連建議使用簡單的心跳服務測試,起到保活會話的作用。使用長串連測試高並發能力時,同樣需要注意用戶端連接埠不足的問題。
壓測處理資料量建議使用長串連,用於測試頻寬上限或特殊業務。
壓測工具的逾時時間建議設定一個較小值,如5秒。因為逾時時間太大,測試結果顯示平均回應時間加長,導致不利於判斷是否已經到達壓測水位。逾時時間調小,測試結果會體現在成功率上,便於快速判斷壓測水位。
壓測每秒請求數,用於測試負載平衡服務與後端伺服器的請求處理能力。可以選擇HTTP短串連、HTTP長串連、HTTPS短串連、HTTPS長串連進行測試。
伺服器組配置建議
建議關閉健全狀態檢查功能,減少健全狀態檢查對後端伺服器的訪問請求。
壓測工具建議
不建議您使用Apache ab作為壓力測試工具:Apache ab在大量並發情境下存在3秒、6秒、9秒階梯式停頓的現象。Apache ab會通過判斷content length來確定請求是否成功,而NLB掛載多台後端伺服器時,返回的content length會不一致,導致測試結果有誤。
可能導致壓測效能低的原因
若發現壓測效能低,可能是以下原因造成的:
用戶端連接埠不足
在進行壓力測試時,用戶端連接埠不足會導致串連建立失敗。負載平衡會預設抹除TCP串連的timestamp屬性,Linux協議棧的tw_reuse(time_wait狀態串連複用)無法生效,time_wait狀態串連堆積導致用戶端連接埠不足。
解決方案:用戶端使用長串連代替短串連。使用RST報文中斷連線,即socket設定SO_LINGER屬性。
後端伺服器accept隊列滿
後端伺服器accept隊列滿,導致後端伺服器不回複syn_ack報文,用戶端逾時。
解決方案:預設net.core.somaxconn的值為128,執行
sysctl -w net.core.somaxconn=1024
命令更改net.core.somaxconn的值,並重啟後端伺服器上的應用。後端伺服器依賴的應用成為瓶頸
請求經過負載平衡到達後端伺服器後,後端伺服器本身負載正常,但由於所有後端伺服器上的應用又依賴其他應用,例如資料庫,當資料庫成為瓶頸時,也會引起效能降低。
解決方案:根據實際情況清理後端伺服器上不需要的應用。
後端伺服器的健全狀態檢查狀態異常
在壓測時,容易忽略後端伺服器的健全狀態檢查狀態,如果有後端伺服器健全狀態檢查失敗或者健全狀態檢查狀態經常跳躍(成功到失敗,又從失敗到成功,反覆變化),也會導致壓測效能低。
解決方案:建議關閉健全狀態檢查功能,減少健全狀態檢查對後端伺服器的訪問請求。