Jmeter分布式常见问题和解决办法
1.为什么使用Jmter分布式:Jmeter单个压力机不足以支撑比较大的压力,在需要并发比较高的场景时,则需要用到jmeter的分布式去实现高压力并发;一般单个压力机运行测试脚本cpu超过90%,则可以考虑采用分布式处理;2.Jmeter分布式的基本原理:3.jmeter分布式需要准备:a. 一般我们需要准备至少三台压力机,一台作为master控制机(主要用来调度脚本和采集结果),两台...
·
1.为什么使用Jmter分布式
- Jmeter单个压力机不足以支撑比较大的压力,在需要并发比较高的场景时,则需要用到jmeter的分布式去实现高压力并发;
- 一般单个压力机运行测试脚本cpu超过90%,则可以考虑采用分布式处理;
2.Jmeter分布式的基本原理:
3.jmeter分布式需要准备:
- a. 一般我们需要准备至少三台压力机,一台作为master控制机(主要用来调度脚本和采集结果),两台或者多台作为slave执行机(主要用例执行实际的测试脚本,启动线程对被压系统施加压力并采集回传结果)
- b.测试脚本,脚本放在主控机上即可
4.分布式配置:
a.master配置情况:
远程的也可以再命令行中直接指定
jmeter -n # 指定通过命令行
-t /home/performance/scprits/performanceTestingdemo-csdb.jmx # 指定脚本
-R 192.168.30.2:1099,192.168.30.3:1099,192.168.30.4:1099,192.168.30.5:1099 # 指定需要运行的从节点,结果采集到master中
-l test_results.jtl # 指定结果文件
-e -o /home/performance/results # 指定报告路径
-J Threads=1000 -J Ramp=10 -J Duration=6000 # 指定线程组的运行参数 通过传参动态调正 线程数 启动时间 和 持续时长
jmeter安装目录的bin目录下,修改jmeter.properties文件的remote_hosts配置,如下图所示
注意:ip和port为需要控制的slave机器的ip和端口,1099为启动jmeter_server的默认端口,也可以按照实际slave端配置的情况使用
b.slave配置情况:
注意:端口的情况可以按需修改,如果不需要修改也可以直接注释,jmeter默认是自己注释的
5.启动slave端的jmeter_server
- a.linux和windows启动对应的bat和shell
这里启动的时候会有两个常见的问题
1.jmeter_server脚本在系统的时候,会读取系统变量JMETER_HOME去启动应该的服务,系统未配置改变量会报错
解决方案:
- 1.配置系统变量JAVA_HOME
- 2.在jmeter_server.bat中set一个JAVA_HOME
2.ssl认证问题
报错信息:
java.rmi.server.ExportException: Listen failed on port: 0;
解决方案
- 1.执行bin目录的create-rmi-keystore脚本生成rmi放到slave的bin目录中
- 2.注释调jmeter_properties配置中的ssl认证:server.rmi.ssl.disable=true
运行报错问题
报错日志:
原因:这是服务器双网卡造成的问题
解决办法:
set rmi_host=-Djava.rmi.server.hostname=192.168.0.205
if not "%SERVER_PORT%" == "" goto port
call jmeter -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS% %rmi_host%
goto end
6.启动master主控机的jmeter运行
注意:如果你的脚本中有使用CSV Data Set Config原件,那么在master的脚本需要使用绝对路径;否则你会发现你的脚本是无法完成分布式驱动的
7.命令行驱动分布式
解析:-r 标识远程启动
jmeter -n -t D:\test\Business\test_performance.jmx -r -l test_results.jtl -e -0 D:\resultTest
指定某个slave运行(-R):
jmeter -n -t D:\test\Business\test_performance.jmx -R 10.11.12.13:1099 -l test_results.jtl -e -0 D:\resultTest
更多推荐
已为社区贡献1条内容
所有评论(0)