閱讀531 返回首頁    go windows


負載均衡性能與測試概要說明__性能壓測_技術運維分享_負載均衡-阿裏雲

1、負載均衡性能相關配置說明
2、為何7層比4層服務性能低

3、負載均衡性能測試操作指導


1. ,負載均衡性能相關配置說明

,當前架構下與負載均衡性能相關的配置說明如下:

  • ,負載均衡通過共享千兆網絡與後端,ECS進行數據交互。
  • ,單個監聽公網帶寬峰值,1Gbps 。
  • ,單個監聽私網帶寬峰值,1Gbps 。
  • ,HTTP-,會話保持,-Cookie超時時間默認,3600毫秒,最高,86400秒。
  • ,TCP-,會話保持,-超時時間默認,1000毫秒,最高,86400秒。
  • ,單個,key的,API訪問頻率限製。
  • ,不同類型協議服務等待後端響應的超時時間:
    • ,TCP: 900,秒
    • ,UDP: 300,秒
    • ,HTTP: 60,秒
    • ,HTTPS,:,60秒

,2. 為何,7層比,4層服務性能低

,負載均衡集群底層采用,LVS(,4層)和,Tengine(,7層)實現。其中,4層監聽經過,LVS後直接到達後端服務器;而,7層監聽經過,LVS後,還需要再經過,Tengine,最後達到後端服務器。所以,7層比,4層多了一個處理環節,導致,7層性能沒有,4層性能好。

,另外,除了,7層服務自身架構導致比,4層性能低外。如下場景也可能導致,7層服務性能不高。

 

,客戶端端口不足

,該場景尤其容易發生在大並發訪問時(比如壓測)。負載均衡默認會移除,TCP連接的,timestamp屬性,導致,Linux協議棧的,tw_reuse(,TIME_WAIT狀態連接複用)無法生效,進而引起,TIME_WAIT狀態連接堆積並最終導致客戶端端口不足。客戶端端口不足會導致建立連接失敗。

,解決方法:

,可以通過如下兩種手段來規避該問題:

  • ,客戶端使用長連接代替短連接進行業務訪問。
  • ,配置客戶端通過發送,RST而非,FIN報文斷開連接(設置,Socket的,SO_LINGER屬性),避免產生,TIME_WAIT狀態連接。

後端Linux ECS服務器accept隊列滿

,負載均衡後端,Linux ECS服務器的,accept隊列滿,導致後端服務器無法回複,SYN ACK報文進行正確響應,最終導致客戶端連接超時。

,解決方法:

,Linux,默認的核心參數,net.core.somaxconn值為,128,執行如下指令將其調整成,1024或更大值並重啟服務器上的應用生效:

,sysctl -w net.core.somaxconn=<1024>

 

,後端服務器連接過多

 

,由於架構設計的原因,使用,7層負載均衡服務時,用戶長連接經過,Tengine後會轉為短連接。這可能會導致後端服務器連接過多,進而影響壓測性能。

 

,後端服務器所依賴的應用成為瓶頸

 

,請求經過負載均衡達到後端服務器後,後端服務器本身負載都正常。但由於後端服務器上的應用又依賴其它應用(比如數據庫等),那麼被依賴應用的性能也可能會成為壓測瓶頸。

 

,後端,ECS健康檢查狀態異常

 

,如果有後端,ECS健康檢查失敗,或者由於業務不穩定導致健康檢查狀態頻繁切換(好到壞,又從壞到好,反複變化),也會影響最終的壓測性能。

,3. 負載均衡性能測試操作指導

,基於前述因素,建議用戶在負載均衡性能測試時關注如下要點:

 

,注意事項

 

  • ,壓測負載均衡轉發能力,建議使用短連接
    ,一般來說壓測除了驗證會話保持,均衡性等功能外,主要驗證的是負載均衡的轉發能力,因此建議使用短鏈接,,用於測試負載均衡和後端服務器處理能力。但使用短連接測試時需要注意上述客戶端端口不足問題。
  • ,壓測負載均衡吞吐量建議使用長連接,用於測試帶寬上限或特殊業務。
  • ,壓測工具的超時時間建議不要設置過大(,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簡單壓測示例

 

  1. ,, ,購買兩台,ECS用作後端服務器,服務器規格:, CPU 1核,內存, 512M,, CentOS 6.3 64位。
  2. ,購買一個負載均衡實例用於提供負載均衡服務,並綁定此前購買的,ECS作為後端服務器。
  3. ,分別創建,TCP、,HTTP監聽各一個,後端端口都設置為,80。
  4. ,在前述,ECS上都安裝,apache web server,用於提供,web服務,並設置默認首頁為,index.html後啟動服務。

yum install -y httpd echo "testvm" > /var/www/html/index.html service httpd start

 

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

      6. 在PTS中創建測試腳本, 注意關閉長連接和設置超時時間:

  • ,超時時間,5秒:, PTS.HttpUtilities.setTimeout(5000)
  • ,關閉長連接 :,PTS.HttpUtilities.setKeepAlive(False)

,       7. 開始壓測,等待壓測完畢檢查壓測結果即可。

 

最後更新:2016-07-12 13:21:11

  上一篇:go 故障賠償說明___相關協議_負載均衡-阿裏雲
  下一篇:go 健康檢查的相關配置,是否有相對合理的推薦值?__健康檢查_技術運維分享_負載均衡-阿裏雲