jmeter安装
前置条件
一般linux系统已有java,通过java -version查看对应的版本,如有成功返回结果则不需要重新安装java,如无则需安装配置java(过程网搜即可)
jmeter安装
jmeter地址:http://archive.apache.org/dist/jmeter/binaries/
root权限 sudo
-
s
cd /usr/local/
mkdir jmeter
下载传到服务器
tar -zxvf apache-jmeter-5.3.tgz
vim /etc/profile
export JMETER_HOME= /usr/local/jmeter/apache-jmeter-5 .3 export PATH=$JMETER_HOME /bin :$PATH |
source /etc/profile
jmeter -v
jmeter运行
在mac或windows上存储好需要执行的jmx文件,然后放置在linux系统上执行。进入jmx文件所在目录,执行:jmeter -n -t .jmx文件名称 -l .jtl报告名称
jmeter -n -t ***.jmx -l ***2.jtl
注jmx文件需符合以下条件,否则会报错。
1、使用的jmeter版本需同linux系统上的完全一致;
2、不可有中文,需在英文模式下新建jmx文件并保存;
3、不可以用类似于jp@gc -扩展类的监听器。
Jmeter插件
增加线程组和监听器样式。
https://jmeter-plugins.org/downloads/old/,下载JMeterPlugins-Extras-1.4.0.zip和JMeterPlugins-Standard-1.4.0.zip。
https://jmeter-plugins.org/wiki/PerfMonAgent/中的PerfMonAgent/(用于服务器性能测试监控,后续会提及)
解压后,将文件中 \lib\ext下的jar包放在jmeter的/lib/ext下。
linux请求参数化
本地的jmeter文件上传到linux服务器上后,参数csv文件存放在linux服务上同jmx文件相同目录,且jmx文件中的csv目录更新为linux服务器上所在的目录,相同执行命令执行即可。
jmeter -n -t ***.jmx -l ***03.jtl
linux远程linux执行
一台linux作为控制机,N条linux作为执行机
控制机配置
修改jmeter.properties
sampleresult.default.encoding=utf-8 #避免查看结果树返回的中文内容显示乱码 remote_hosts=localhost:1099,10.1*.2*.1**:1099 #(本机可远程 这里填写执行机ip,默认端口号1099,用逗号隔开) mode=Standard #保证查看结果树中的response data可显示,不为空 |
执行机配置
注:如果本机作为执行机,则以下配置也需要在本地配置。
修改bin/jmeter.properties
sampleresult.default.encoding=utf-8 #避免查看结果树返回的中文内容显示乱码 jmeter.save.saveservice.response_data= true #改成true jmeter.save.saveservice.samplerData= true #改成true # Set this if you don't want to use SSL for RMI Jmeter--远程启动报错无rmi_keystore.jks:https://zhuanlan.zhihu.com/p/181652267 server.rmi.ssl.disable= true #改成true |
修改bin/user.properties,文件末尾增加以下内容:
jmeter.save.saveservice.output_format=xml jmeter.save.saveservice.response_data= true jmeter.save.saveservice.samplerData= true jmeter.save.saveservice.requestHeaders= true jmeter.save.saveservice.url= true jmeter.save.saveservice.responseHeaders= true |
执行命令
jmeter -n -r -t /usr/local/jmeter/testjmx/***/***-***.jmx -l /usr/local/jmeter/testjmx/***/log/889.jtl
查看结果
mac查看
将jtl报告文件down到本地,在本地打开Jmeter,创建一个线程组,在线程组下添加监听器,点击界面上的浏览按钮,将导出的文件test.jtl添加进来即可看到脚本测试的报告
jtl报告生成html文件
修改bin/user.properties,文件末尾增加以下内容:
#jmeter.save.saveservice.output_format=xml 去掉该句 |
生成html报告
直接生成html报告
jmeter -n -t ***--qps-dj-2.jmx -l log2.jtl -e -o result
已有jtl生成报告
jmeter -g log2.jtl -o result
递增线程Stepping Thread Group
前提条件:已安装插件:JMeterPlugins-Standard-1.4.0.zip。
linux执行命令参数化
线程、命令参数化
线程添加User Defined Variables,参数配置如下,如:thn ${__P(thn,3)} 线程、loop填写参数
命令执行:
jmeter -n -t ***-fallback-qps-dj.jmx -l log1.jtl -Jthn=10 -Jloopn=20 (本地参数化)
jmeter -n -t -r ***-fallback-qps-dj.jmx -l log1.jtl -Gthn=10 -Gloopn=20 (远程参数化)
jmeter -n -t ***-fallback-add.jmx -Jtst=100 -Jtend=500 -Jtadd=50 -Jloop=120 -Jendloop=180 -l ***log/***-fallback-add-zh.jtl
备忘记录
命令
-h 帮助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-r 远程执行 -> 启动远程服务
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
-e 执行后生成报告
-o 生成的html文件名称(需命令为不存在的文件夹)
-J参数名 本地执行命令的参数名称
-G参数名 远程执行命令的参数名称
注意:如果未设置Jmeter的环境变量则在执行脚本的时候需要检查当前目录是否是jmetet的bin 目录下
注:jmeter脚本要设置调度器持续时间,tps是要跑一定的时间才成的,比如跑个三五分钟,不设置调度时间脚本跑一次就结束了, 如1个vu的4.8就是最大tps了,增加2vu后并发tps反而下降说明服务器已经处理不过来了
分布式
https://www.cnblogs.com/chuxinxin/p/9358522.html
https://blog.csdn.net/qq_40308101/article/details/100017351
问题更新
# 使用5.3版本jmeter替换2.13版本jmeter 但并没有生效 后使用root更新原软连接后成功:ln -s /home/worker/apache-jmeter-5.3/bin/jmeter /usr/bin/jmeter (新增)
ln -snf /home/worker/apache-jmeter-2.13/bin/jmeter /usr/bin/jmeter (修改为2.13)
注: 修改环境变量配置文件未生效
#JMETER="/home/worker/apache-jmeter-2.13"
JMETER="/home/worker/apache-jmeter-5.3"
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JMETER/bin