96
阿裏雲
為什麼壓測性能低__負載均衡性能常見問題_常見問題_負載均衡-阿裏雲
我有一個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 的客戶端端口不足問題。
壓測負載均衡吞吐量建議使用長連接,用於測試帶寬上限或特殊業務
壓測工具的超時時間建議調小(5秒)。超時時間太大的話,測試結果會體現在平均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)
最後更新:2016-11-23 17:16:04
上一篇:
負載均衡支持多可用區__負載均衡如何容災_常見問題_負載均衡-阿裏雲
下一篇:
負載均衡性能指標__負載均衡性能常見問題_常見問題_負載均衡-阿裏雲
麵授培訓課程介紹__麵授培訓課程_上雲培訓-阿裏雲
專有網絡中跨可用區部署資源__最佳實踐_用戶指南_專有網絡 VPC-阿裏雲
推送消息給android__API列表_OpenAPI 1.0_移動推送-阿裏雲
設置全表掃描__數據庫管理_開放API_分布式關係型數據庫 DRDS-阿裏雲
1.5 在應用中連接和使用分析型數據庫__快速入門_分析型數據庫-阿裏雲
堡壘機__使用金融雲產品_金融雲-阿裏雲
步驟 3-3:創建和查詢多維數據集__創建監控任務_用戶指南_業務實時監控服務 ARMS-阿裏雲
MQ 簡介__產品簡介_消息隊列 MQ-阿裏雲
按量計費預告(2017-1月生效)__計費說明_日誌服務-阿裏雲
視頻轉碼 JAVA SDK 安裝及調用___視頻專區_媒體轉碼-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲