jmeter使用多台linux进行分布式压测

当并发量较大时,由于jmeter本身是由java写的,会受到硬件资源的限制。另外单台压力机,导致达不到100万级TPS的并发量。
因此在并发量较大时,可以考虑jmeter分布式压测,原理图:
jmeter使用多台linux进行分布式压测_第1张图片

Jmeter分布式执行原理:

1、Jmeter分布式测试时,选择其中一台作为控制机(server),其它机器做为Agent执行机(slave)。
2、执行时,将命令发送到每台Agent节点,使用命令行模式执行压测脚本。
3、执行完成后,Agent会把结果回传给server,server会收集所有Agent的信息并汇总。

一、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 & ,启动Agent节点
注意:jmeter-server后面指定Agent ip

nohup jmeter-server -Djava.rmi.server.hostname=10.201.7.239 & 

在这里插入图片描述
jmeter使用多台linux进行分布式压测_第2张图片

二、控制机配置

同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:生成测试结果文件

执行成功后,server端日志打印情况:

jmeter使用多台linux进行分布式压测_第3张图片

Agent端日志打印情况:

jmeter使用多台linux进行分布式压测_第4张图片

三、注意事项

  • A、若是脚本中设置的并发线程数是100,采用3台slaver机器去施加压力,那么对于服务端来说,此时的并发线程数是300。

  • B、为了减少出错的可能性,最好按照如下Jmeter 分布式要求:
    1、各个机器在相同目录下安装相同版本的jdk;
    2、各个机器在相同的目录下安装相同版本的jmeter;
    3、配置/etc/hosts的IP和hostname的映射。
    4、修改各个机器的jmeter的默认内存参数,从512m调整为合适大小。

四、自定义端口:

上面已经完成了Jmeter分布式压测,这部分主要介绍下如何自定义slave端口:

1、Agent:在Agent机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1888:

server_port=1888
server.rmi.localport=1888

2、参考Agent配置,启动Agent机
3、master:修改master机器的jmeter.properties文件:

remote_hosts=10.201.7.240:1000,10.201.7.239:1888

参考文档:
https://www.cnblogs.com/puresoul/p/4844539.html
https://www.cnblogs.com/caopeiyang/p/9104574.html

你可能感兴趣的:(jmeter)