CLB同時支援四層負載平衡與七層負載平衡。實際業務情境中如您有CLB壓力測試需求,可參考本文進行壓力測試。
壓測方法
在進行壓力測試時,配置建議如下:
壓測負載平衡轉寄能力建議使用短串連。
一般來說壓測除了驗證會話保持和均衡性等功能外,主要是驗證負載平衡的轉寄能力,因此使用短串連比較合適,用於測試負載平衡和後端伺服器的處理能力。使用短串連測試時,需要注意用戶端連接埠不足的問題。
壓測負載平衡輸送量建議使用長串連,用於測試頻寬上限或特殊業務。
壓測工具的逾時時間建議設定為一個較小值,如5秒。逾時時間太大的話,測試結果會體現在平均回應時間加長,不利於判斷壓測水位是否已到達。逾時時間調小,測試結果會體現在成功率上,便於快速判斷壓測水位。
後端伺服器提供一個靜態網頁用於壓測,以避免應用邏輯帶來的損耗。
壓測時,監聽配置建議如下:
不開啟會話保持功能,否則壓力會集中在個別後端伺服器。
建議關閉健全狀態檢查功能,減少健全狀態檢查對後端伺服器的訪問請求。
效能測試服務的5000並發規格能夠提供5個及5個以上的公網IP。
壓測工具建議
不建議您使用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的值,並重啟後端伺服器上的應用。後端伺服器依賴的應用成為瓶頸
請求經過負載平衡到達後端伺服器後,後端伺服器本身負載正常,但由於所有後端伺服器上的應用又依賴其他應用,例如資料庫,當資料庫成為瓶頸時,也會引起效能降低。
解決方案:根據實際情況清理後端伺服器上不需要的應用。
後端伺服器的健全狀態檢查狀態異常
在壓測時,容易忽略後端伺服器的健全狀態檢查狀態,如果有後端伺服器健全狀態檢查失敗或者健全狀態檢查狀態經常跳躍(成功到失敗,又從失敗到成功,反覆變化),也會導致壓測效能低。
解決方案:建議關閉健全狀態檢查功能,減少健全狀態檢查對後端伺服器的訪問請求。