jmeter(二十七)分散式壓測注意事項
之前的部落格:jemter(二十三):分散式測試簡略的介紹了利用jmeter做分散式測試的方法,當時只是介紹了背景和原因,以及基本的配置操作,有同學說寫得不夠詳細。
正好今年雙十一,我司的全鏈路壓測,也嘗試了jmeter分散式壓測的手段。這篇部落格,介紹下利用jmeter在NGUI模式下進行分散式壓測的一些小技巧和注意事項。
一、壓測機
1、數量&成本
無論是從成本角度還是維護的難易方面,壓測機的數量,適量就好。
舉個例子,8C16G的一臺伺服器,部署jmeter後,根據我個人的測試比對資料,配置≤1500個執行緒數,最好。太多了效能損耗較大,延時高;太少了又浪費。
2、controller&agent
模擬的併發執行緒數超過5K,我個人建議留出一臺做專門的controller機器,主要是避免agent機器資料上報帶來的影響(如果有其他的資料儲存+視覺化服務,可以忽略)。
3、服務授權
如果壓測啟動和服務配置都是root許可權,那麼在linux環境下,需要給jmeter和jmeter-server授權,命令為chmod 777 jmeter,授權後,顯示如下:
二、服務通訊
1、網路
所有的壓測機和被測服務,最好在同一個網段內,儘可能減少時延問題(如果不在同一個網段,就需要找運維建立專門的網路通道,這個很浪費)。
2、埠
在分散式壓測配置時,需要在controller機器的jmeter.properties
3、內網和公網
如果壓測機在內網,而訪問的請求地址(現在都是統一的閘道器域名)在外網,就要注意一點:內網到公網一般是有頻寬限制的,最好在壓測開始前和運維確認。
三、資料切割
壓測時候需要用到引數化資料,有些業務場景是需要先登入再進行操作的,或者某些資料具有唯一屬性。
在分散式壓測時候,需要注意,進行均勻的資料切割,確保每個請求的入參請求都是唯一的(可共用的引數不用切割)。
其實,在引數化資料準備階段,就應該考慮到這個問題,資料的可用性、唯一性以及數量級。
四、服務啟動
壓測機到位,服務授權配置好了,指令碼也寫好了,網路也沒問題,那麼如何在NGUI模式(即linux環境)下啟動呢?
1、以服務形式啟動agent機
網上很多其他部落格都寫著利用命令./jmeter-server啟動壓測服務,但這樣有個缺點,只要服務連線中斷,這個壓測服務就不可用了。
但是以後臺服務的形式啟動agent機器的jemter-server,就不用擔心服務不可用的問題,命令為nohup sh jmeter-server &,示意如下:
PS:注意,輸入如上命令後,需要回車兩次,然後通過命令,即可檢視服務是否啟動成功。
2、壓測啟動的2種方式
①、指定壓測機啟動,命令:./jmeter -n -t /path/test.jmx -R 127.0.0.1,127.0.0.2
②、啟動所有壓測機,命令:./jmeter -n -t /path/test.jmx -r,示意如下:
3、更多命令
以上,就是jmeter分散式壓測相關的一些容易踩坑的地方,僅供參考。。。