当并发量较大时,由于jmeter本身是由java写的,会受到硬件资源的限制。另外单台压力机,导致达不到100万级TPS的并发量。
因此在并发量较大时,可以考虑jmeter分布式压测,原理图:
一、Agent节点配置
首先安装好java和jmeter,并配置好环境变量。
然后找到bin/jmeter.properties,取消server.rmi.ssl.disable=false注释,并设置为true(关闭ssl认证)
# 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
启动Agent节点,nohup jmeter-server -Djava.rmi.server.hostname=10.201.7.239 &
jmeter-server后面指定Agent ip
nohup jmeter-server -Djava.rmi.server.hostname=10.201.7.239 &
二、控制机配置
同Agent配置首先安装好java和jmeter,并配置好环境变量。
1、然后找到bin/jmeter.properties,取消server.rmi.ssl.disable=false注释,并设置为true(关闭ssl认证)
# 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
2、开配置文件 /bin/jmeter.properties 配置 agent 节点的 IP
# Remote Hosts - comma delimited
remote_hosts=10.201.7.239:1099 #代理机ip和端口,多个用","分隔
#remote_hosts=localhost:1099,localhost:2010
# RMI port to be used by the server (must start rmiregistry with same port)
#server_port=1099 #控制机端口可以修改,某些应用可能会占用控制机1099端口
3、到此控制机和Agent配置完成,开始运行命令,指定agent进行压测
#-R指定Agent进行压测,多个ip用","分隔
jmxx -n -t rec_post_forcast_spark.jmx -R 10.201.7.239 -l ./saprk/spark-5-5-22.jtl -e -o ./saprk/spark-5-5-22
#或者启动进行压测
jmxx -n -t rec_post_forcast_spark.jmx -r -l ./saprk/spark-5-5-22.jtl -e -o ./saprk/spark-5-5-22
参数:
n:非gui运行
t:指定测试脚本
R:指定多少个 agent 启动并参与测试
r: 代表全部 agent 启动并参与测试
l:生成测试结果文件
三、注意事项
-
A、若是脚本中设置的并发线程数是100,采用3台slaver机器去施加压力,那么对于服务端来说,此时的并发线程数是300。
-
B、为了减少出错的可能性,最好按照如下Jmeter 分布式要求:
1、各个机器在相同目录下安装相同版本的jdk;
2、各个机器在相同的目录下安装相同版本的jmeter;
3、配置/etc/hosts的IP和hostname的映射。
4、修改各个机器的jmeter的默认内存参数,从512m调整为合适大小。