阿里云負載均衡為什么壓測性能低

日期: 2017-04-08 00:53:15 / 人氣: 1814

我有一個HTTP負載均衡監聽,后面掛了多個ECS,為什么壓測性能跑不上去?

7層性能會比4層性能低

負載均衡集群采用LVS和Tengine實現,其中4層監聽經過LVS后直接到達后端服務器,而7層監聽經過LVS后,還需要再經過Tengine,最后達到后端服務器。就是說7層比4層多了一個處理環節,因此,7層性能沒有4層性能好。

除了7層本身的性能較4層低外,有的用戶發現7層性能很差,根本跑不上去,掛了兩臺ECS的7層負載均衡監聽性能還不如一臺ECS的性能,有可能是如下原因:

CASE1 客戶端端口不足

尤其容易發生在壓測的時候,客戶端端口不足會導致建立連接失敗,負載均衡默認會抹除tcp連接的timestamp屬性,linux協議棧的tw_reuse(time_wait狀態連接復用)無法生效,time_wait狀態連接堆積導致客戶端端口不足

解決方法:

客戶端端使用長連接代替短連接。

使用RST報文斷開連接(socket設置SO_LINGER屬性) ,而不是發FIN包這種方式斷開。

CASE2 后端服務器accept隊列滿

后端服務器accept隊列滿,導致后端服務器不回復syn_ack報文,客戶端超時。

解決方法:默認的net.core.somaxconn參數為128,執行sysctl -w net.core.somaxconn=1024 或者其它更大的值,并重啟后端服務器上的應用。

CASE3 后端服務器連接過多

由于架構設計的原因,使用7層負載均衡時,用戶長連接經過Tengine后變成短連接,可能造成后端服務器連接過多,從而表現為壓測性能上不去。

CASE4 后端服務器依賴的應用成為瓶頸

請求經過負載均衡達到后端服務器后,后端服務器本身負載都正常,但由于所有的后端服務器上的應用又依賴其它應用,比如數據庫,數據庫成為瓶頸,也會引起

CASE5 后端Server的健康檢查狀態異常

尤其在壓測的時候容易忽略后端Server的健康檢查狀態,如果有后端Server健康檢查失敗或者健康檢查狀態經常跳躍(好到壞,又從壞到好,反復變化)也會導致性能跑不上去。

壓測時的建議

基于以上分析,壓測時建議關注如下點

注意事項

壓測負載均衡轉發能力建議使用短鏈接

一般來說壓測除了驗證會話保持,均衡性等功能外,主要想驗證的是負載均衡的轉發能力,因此使用短鏈接比較合適,用于測試負載均衡和后端服務器處理能力。但使用短連接測試時注意上述的case1 的客戶端端口不足問題。

壓測負載均衡吞吐量建議使用長連接,用于測試帶寬上限或特殊業務

壓測工具的超時時間建議調?。?秒)。超時時間太大的話,測試結果會體現在平均RT加長,不利于判斷壓測水位是否已到達。超時時間調小,測試結果會體現在成功率上,便于快速判斷壓測水位

后端服務器提供一個靜態網頁用于壓測,以避免應用邏輯帶來的損耗(I/O, DB等)

壓測工具建議

不建議使用apache ab

ab在大并發場景下存在問題,會存在3s,6s,9s階梯式停頓的現象。ab會通過判斷content length來確定請求成敗,在負載均衡掛載多臺后端服務器的時候,返回的content length不一致,會干擾到測試結果

建議使用阿里云PTS (https://pts.aliyun.com)

可以選擇多個Client作為壓測源,測試結果清晰,并且可以通過配置監控,獲取壓測時后端服務器的性能數據

壓測建議的配置要求

以下設置僅用于壓測負載均衡能力,并不表示用戶生產環境也需要如此設置

監聽不開啟會話保持功能,否則壓力會集中在個別的后端服務器

監聽關閉健康檢查功能,減少健康檢查請求對后端服務器的訪問請求

用多個client(>5)進行壓測,源IP分散,能夠更好的模擬線上實際情況

使用PTS簡單壓測示例

購買兩臺ECS用作后端服務器,購買一個負載均衡實例用于提供負載均衡服務,并且綁定之前購買的ECS作為后端服務器,分別創建TCP、HTTP監聽各一個,后端端口80。ECS服務器信息可以為:(CPU 1核,內存 512M, CentOS 6.3 64位)

安裝apache web server,用于提供web服務

yum install -y httpd

初始化默認首頁index.html

echo "testvm" > /var/www/html/index.html

啟動http服務

service httpd start

訪問本機80端口,確認web服務可用 curl localhost

在PTS中創建測試腳本,開始壓測

注意關閉長連接和設置超時時間

超時時間5秒 PTS.HttpUtilities.setTimeout(5000)

關閉長連接 PTS.HttpUtilities.setKeepAlive(False)


現在致電 0755-88820392 OR 查看更多聯系方式 →

河北20选5走势图基本