單台壓測機通常會遇到客戶端瓶頸,受制於客戶機的性能。可能由於網絡帶寬,CPU,內存的限制不能給到服務器足夠的壓力,這個時候你就需要用到分布式方案來解決客戶機的瓶頸,壓測的結果也會更加接近於真實情況。
jdk和jmeter的下載和安裝就不說了
jmeter 分布式壓測原理:
分布式壓測分為兩塊: 控制器(controller)和代理(agent)
- controller 負責把腳本分發給 agent執行。
- agent 負責執行腳本,產生對服務器的實際壓力,agent 運行 non GUI model,點擊 jmeter-server.bat 即可。agent 執行腳本后,把壓測的結果發送給 controller。
- controller 作為控制器不加入實際測試,只負責發送和收集 agent 信息。
一、配置 agent
1. 我的jmeter版本是 apache-jmeter-5.0,在 agent 機器上需要修改配置 jmeter.properties,修改以下兩處配置:1)找到 server_port 去掉 #,設置端口 。 2)找到server.rmi.ssl.disable=false 改成 true
# RMI port to be used by the server (must start rmiregistry with same port) server_port=1099 #設置 server_port 端口 ...... # Password of Trust store #server.rmi.ssl.truststore.password=changeit # # Set this if you don't want to use SSL for RMI server.rmi.ssl.disable=true # 改成true
2. 雙擊 jmeter-server.bat ,這個 ip 有用,待會要配到 controller 機器上的配置文件里(若報錯'jmeter' is not recognized,需要配置 jmeter 環境變量)
二、配置 controller
1. 打開 controller 的配置文件 jmeter.properties 找到 remote_hosts ,把剛才第二個步驟的 ip 配進去
2. 打開 controller 的配置文件 jmeter.properties ,找到 server.rmi.ssl.disable=false 改成 true (此處 controller 也需要修改,不然會報錯 )
# Password of Trust store #server.rmi.ssl.truststore.password=changeit # # Set this if you don't want to use SSL for RMI server.rmi.ssl.disable=true # 改成true
3. 雙擊 jmeter.bat ,運行一個 agent
agent 服務上顯示 運行成功
4. 至於有同學反饋,分布式壓測時,agent 返回的 response data 在 views Result tree 中查看是空。這個問題取消 jmeter.properties 中 mode=Standard 的注釋,然后重啟 jmeter controller 即可解決(慎用此開關,經過測試600多的qps就能打滿千兆帶寬)。