Jmeter分布式压测实战及踩坑处理(含参数化)
项目中使用Jmeter进行大并发压测时,单机受限内存、CPU、网络IO,会出现服务器压力还没有上
去,但压测服务器由于模拟的压力太大死机的情况。JMeter的集群模式可以让我们将多台机器联合起来
一起产生负载,从而弥补单台机器负载生成能力不足的问题。
分布式压测原理


1、控制机为Master,负载机为Slave
2、Master启动后,会拷贝jmx脚本文件到所有的Slave上
3、Slave会回传压测数据给Master,最后由Master汇总出结果文件
注意事项
1、脚本文件上传到master即可,不用所有的slave都传一份
2、所有机器最好在同一个网段
3、由于master需要发送信息给slave并接收slave回传回来的测试数据,自身会有一定的消耗,建议单独
配置一台机器作为master
4、所有机器的jmeter版本和插件版本要一致
5、如果jmeter版本在4.0以上,需在jmeter.properties中设置 server.rmi.ssl.disable=true
分布式环境配置
Slaves机器配置
编辑所有slave机器jmeter/bin目录下的jmeter.properties文件,slaves机器上remote_hosts不动,根
据需要修改服务端口。默认端口为1099,可以修改为任意未被占用的端口。我这里默认端口没有被占用,
就不做修改。
# Remote Hosts - comma delimited
remote_hosts=127.0.0.1
#remote_hosts=localhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port)
#server_port=1099
Master机器配置
编辑master机器jmeter/bin目录下的jmeter.properties文件,将所有slave机器的地址配置到文件中,
server_port不用修改。
# Remote Hosts - comma delimited
remote_hosts=166.188.20.86,166.188.21.75(slave机器的ip和端口)
#remote_hosts=localhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port)
#server_port=1099
master机器也可以作为负载机,在remote_hosts中加上127.0.0.1即可,但考虑到自身消耗,这里
不使用。如果修改了负载机的端口号,则需带上修改后的端口号,我这里使用的默认值,不用再单独
标注。修改了端口号使用如下配置:
# Remote Hosts - comma delimited
remote_hosts=166.188.20.86:2099,166.188.21.75:2099
#remote_hosts=localhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port)
server_port=2099
参数化文件配置
参数化文件的路径要保持一致,我这里配置在jmeter/bin目录下。注意:所有的slave机器都要上传一
份参数化文件。


分布式压测执行
Slave机器执行
在所有的slave机器上执行 ./jmeter-server 命令,出现以下界面为执行成功。

Master机器执行
确认好所有slave机器都正确启动后,在master机器上执行命令
jmeter -n -t stress0804.jmx -r -l testResult.jtl
命令解析:
- n 非GUI模式运行
- t 要运行的jmx文件
- r 将远程所有的agent启动
- l 生成结果文件
执行结果:

脚本中设置了5个线程,有2台负载机,所有Active为5*2=10个,运行时间2分钟。
常见问题处理
问题一
[test@localhost bin]$ ./jmeter-server
Writing log file to: /home/test/jmeter/apache-jmeter-3.1/bin/jmeter-server.log
Created remote object: UnicastServerRef [liveRef: [endpoint:[127.0.0.1:37863](local),objID:[-3217392f:17b104e6552:-7fff, 742049333908920389]]]
Server failed to start: java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address.
An error occurred: Cannot start. localhost.localdomain is a loopback address.
解决方法:执行命令中指定本地IP ./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
问题二
[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[:39308](local),objID:[24e78a63:16243c70661:-7fff, 7492480871343944173]]]
Server failed to start: java.rmi.RemoteException: Cannot start. Unable to get local host IP address.; nested exception is:
java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
An error occurred: Cannot start. Unable to get local host IP address.; nested exception is:
java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
解决方法:使用hostname命令获取机器名称,追加一个映射iZwz95j86y235aroi85ht0Z
[root@iZwz95j86y235aroi85ht0Z bin]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
120.79.160.143 iZwz95j86y235aroi85ht0Z
windows中修改c:\windows\system32\drivers\etc\hosts文件,增加一条域名与IP的映射
问题三
[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
解决方法:编辑jmeter.properties文件,将server.rmi.ssl.disable的值改为true
问题四
slave机器无法启动或者没有返回执行数据
解决方法:
1、检查master机器和slave机器能否ping通
2、检查防火墙
3、检查master机器和slave机器的服务器时间是否一致
Jmeter分布式压测实战及踩坑处理(含参数化)的更多相关文章
- 压力测试(八)-多节点JMeter分布式压测实战
1.Jmeter4.0分布式压测准备工作 简介:讲解Linux服务器上jmeter进行分布式压测的相关准备工作 1.压测注意事项 the firewalls on the systems are tu ...
- JMeter分布式压测实战(2020年清明假期学习笔记)
一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...
- jmeter 分布式压测(windows)
单台压测机通常会遇到客户端瓶颈,受制于客户机的性能.可能由于网络带宽,CPU,内存的限制不能给到服务器足够的压力,这个时候你就需要用到分布式方案来解决客户机的瓶颈,压测的结果也会更加接近于真实情况. ...
- jmeter分布式压测对master、slave防火墙配置
首先要了解jmeter分布式压测的基础概念:master为统计结果的服务器,slave为各台压力机,如下图所示 一.结论 针对master 1.修改jmeter.properties的client.r ...
- jmeter分布式压测
stop.sh需要跑Jmeter的服务器上安装Jmeteryum install lrzsz 安装rz.sz命令rz jemter的压缩包 拷贝到/usr/local/tools下面unzip apa ...
- jmeter 分布式压测(Linux)
之前一篇博文写的是如何在Linux上使用jmeter压测,这篇介绍下Linux上jmeter的分布式压测. 和windows上的分布式类似,需要配置agent节点和控制机 一.Agent节点配置 1. ...
- JMeter——分布式压测
一.Jmeter4.0分布式压测准备工作 压测注意事项 the firewalls on the systems are turned off or correct ports ...
- jmeter分布式压测原理简介1
1.什么叫分布式压测? 分布式压测:模拟多台机器向目标机器产生压力,模拟几万用户并发访问 2.分布式压测原理:如下 3.更多补充.....待添加
- jmeter分布式压测 java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
解决办法:1.控制机和代理机:修改jmeter.properties中server.rmi.ssl.disable=true 不启动SSL2.控制机和代理机: Slave(从压力机)启动jmeter- ...
随机推荐
- 【Linux】通过shell脚本对mysql的增删改查以及my.cnf的配置
目录 shell操作mysql 1.获取mysql默认密码 2.修改my.cnf文件 3.shell创建mysql数据库 4.shell创建mysql表 5.shell添加数据 6.shell删除数据 ...
- 20 批量ping主机
#!/bin/bash IP_LIST="`cat /root/ip.txt`" ip_dir="/root/ip_dir" [ ! -d ${ip_dir} ...
- 9.6、zabbix监控总结
1.自动发现和自动注册的区别: (1)自动发现: 1)用于zabbix-agent的被动模式,是zabbix-server主动去添加主机.在web上创建自动发现的规则 后,zabbix-server会 ...
- Vue(13)子组件与父组件超详细解析
父组件和子组件 我们经常分不清什么是父组件,什么是子组件.现在来简单总结下:我们将某段代码封装成一个组件,而这个组件又在另一个组件中引入,而引入该封装的组件的文件叫做父组件,被引入的组件叫做子组件.具 ...
- 在Xshell中文件内容显示乱码
1.修改系统语言 支持中文 echo $LANG 查看系统语言 默认 en_US.UFT_8 vim /etc/locale.conf 修改配置文件 将LANG的值改为 zh_CN.UT ...
- Nginx 实践:location 路径匹配
1. 目标 nginx 反向代理,路径映射的过程是什么?如何配置路径映射规则? 2.location 路径匹配 2.1 匹配规则: location 路径正则匹配: 符号 说明 ~ 正则匹配,区分大小 ...
- redis集群环境配置
为什么需要集群 redis是一个开源的 key->value 高速存储系统,但是由于redis单线程运行,在系统中,只能利用单核的性能 当redis的调用越来越频繁时,可能会出现redis过于繁 ...
- php漏洞 strcmp漏洞
0x01: 背景:strcmp函数,参数是两个字符串,相等返回为零,大于,返回大于零,小于,返回小于零. 0x02: 如果传入的值,不是字符串的话,会报错,同时使得两个字符串直接相等,返回为零. 一般 ...
- 第十一章:random库概述
random库是使用随机数的python标准库 伪随机数:采用梅森旋转算法生成的伪随机序列中的元素 random库主要用于产生随机数 使用random库:import random random库的概 ...
- 使用crt连接linux慢
1.主要原因是linux中启用了 修改sshd的配置文件把其中dns解析设置为no即可,操作如下: [root@dong ~]# vi /etc/ssh/sshd_config 查找: #UseDNS ...