Jmeter分布式压测

简单来说就是,多台机器同时安装jmeter,选择一台机器作为调度机,其他作为压力机。进行相应的配置后,就可以用调度机操控压力机发起请求。


分布式执行原理

负载机配置

安装JAVA
  1. 下载并解压JDK
mkdir /usr/lib/jvm/
cd /usr/lib/jvm/
tar -zxvf jdk1.8.0_121.tar.gz

配置jdk的环境变量

#vi /etc/profile
 
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121
export JRE_HOME=/usr/lib/jvm/jdk1.8.0_121/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
  1. 再执行source /etc/profile刷新配置文件
  2. 通过java -version查看是否设置成功
安装Jmeter

下载jmeter.tgz文件,并将文件上传至/data/

#将jmeter文件解压,并将解压后的文件拷贝至指定路径/data/
tar xvf apache-jmeter-4.0.tgz
 
配置jmeter的环境变量,将下述内容复制粘贴
#vi /etc/profile 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:
export PATH=$PATH:$JAVA_HOME/bin:$JMETER_HOME/bin:
export JMETER_HOME=/data/apache-jmeter-4.0
  1. 再执行source /etc/profile刷新配置文件
  2. 通过jmeter -v查看是否设置成功
    在jmeter目录创建testplan testresult子目录 , 将测试脚本login.jmx上传至testplan,进入bin文件下执行测试输出测试结果命令
cd  /data/apache-jmeter-4.0/bin
jmeter -n -t ./testplan/login.jmx -l ./result/test.jtl  -e -o ./testresult/

分布式配置

调度机Controller

  1. 在多台机器中按照上述步骤配置jmeter,选择其中一台为调度机,其他为执行机
  2. 在调度机上修改bin/jmeter.properties, 添加执行机的IP及端口 , 1099是默认的rmi通信端口
remote_hosts=192.168.174.130:1000,192.168.3.148:1888

案例中 , 192.168.174.130:1000即是执行机IP和端口号

  1. 取消server.rmi.ssl.disable=false的中注释并将false改为ture
# Remote Hosts - comma delimited
remote_hosts=192.168.5.95:1099,192.168.5.103:1099

server.rmi.ssl.disable=true  

  1. 开启执行脚本机器上的server服务,bin/jmeter-server
  2. 在控制机执行分布式命令
#使用 -r 启动所有从机执行脚本
jmeter -n -t testplan/comic.jmx -r -l testResult/result1.jtl  

#指定从机IP
jmeter -n -t testplan/comic.jmx -R 10.15.243.53,10.15.230.78 -l testResult/result1.jtl

执行机Agent

  1. 修改jmeter.properties
server_port=1000
server.rmi.localport=1000
server.rmi.ssl.disable=true
  1. 然后执行命令 , 启动服务
sudo jmeter-server -Djava.rmi.server.hostname=192.168.174.130 #从机自身IP

遇到的问题及解决

An error occurred: Cannot start. localhost is a loopback address

In latest version, you can run your script with:指定本地IP
解决方案:

sudo jmeter-server -Djava.rmi.server.hostname=192.168.174.130 #从机自身IP
java.io.FileNotFoundException: rmi_keystore.jks

1、Jmeter4.0,启动slave报错java.io.FileNotFoundException: rmi_keystore.jks

image
  • 解决方法一:slave的jmeter.properties中,设置server.rmi.ssl.disable=true
    原因:jmeter4.0以上的版本,默认启用RMI连接的安全通信,需要创建密钥库。所以将SSL禁用即可。

  • 解决方法二:手动生成秘钥和证书。执行create-rmi-keystore.bat(Windows适用)或create-rmi-keystore.sh(Linux适用)

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

在使用java远程启动linux服务器上的jmeter服务是报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

查询该报错基本都是tomcat操作 , 编辑jmeter/bin/jmeter-server文件,在顶部添加JAVA_HOMEJRE_HOME即可

解决Tomcat异常

其它说明

1.调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。

  1. 参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。

  2. 每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。

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

  4. 为了减少出错的可能性,最好按照如下Jmeter 分布式要求:

  • 各个机器在相同目录下安装相同版本的jdk;
  • 各个机器在相同的目录下安装相同版本的jmeter;
  • 配置/etc/hosts的IP和hostname的映射。
  • 修改各个机器的jmeter的默认内存参数,从512m调整为合适大小。

基础docker&k8s的分布式压测方案

更多资料可查看
https://github.com/kubernauts/jmeter-kubernetes

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360