注意:jmeter 压缩包同时支持 windows 和 linux 环境使用,下载链接:apache-jmeter-5.4.1.zip
- windows 下双击 bin 目录下的 jmeter.bat 使用图形界面,也可使用 jmeter 文件执行命令行方式
- linux 下利用 jmeter 进行压测
1、https接口压测配置
方法1、windows下图形界面配置
选项 -> SSL管理器 -> 选择客户端证书就行了
(注:测试时会要求输入证书密码,每次重新打开都要输入(麻烦),用方法二可避免)
方法2、linux 和 windows 下通用配置
bin 目录下找到配置文件 system.properties 文件,如下修改 ssl 证书部分:
javax.net.ssl.keyStore=./keystore/cert.jks #配置证书位置
javax.net.ssl.keyStorePassword=123456 #证书密码
javax.net.ssl.keyStoreProvider=SUN #密钥库提供者,可不填
javax.net.ssl.keyStoreType=JKS #证书类型
2、预处理程序引入外部 .js 等模块
应用场景:构建预处理程序,使用 javascript 语言,这是需要用到 CryptoJS 加密方法,须用到 crypto-js.js 文件,此时将该文件放置到 bin 目录下即可,在程序中,使用load("crypto-js.js");
加载该文件即可使用 CryptoJS 加密方法。
3、linux 下命令行进行压测
./jmeter -n -t test.jmx -l test-result.jtl -e -o test-report
# -n 使用非GUI模式,也就是命令行模式
# -t 执行测试文件所在的位置及文件名
# -l 指定生成测试结果的保存文件,jtl文件格式
# -e 测试结束后,生成测试报告
# -o 指定测试报告的存放位置,指定的文件及文件夹必须不存在,否则执行会失败
# test-result.jtl 可用jmeter图形化界面打开,也可以直接记事本等编辑器打开查看
# test-report 文件夹下网页可用浏览器打开
4、 jmeter 接口压测时上传文件
- 不能在HTTP信息头管理器中指定 Content-Type(不大清除为啥指定后报错500)
- 文件上传时的 MIME类型 指定为 multipart/form-data
5、 jmeter分布式压测部署(Linux下)
背景:假设四台服务器(172.122.211.185\172.122.211.186\172.122.211.187\172.122.211.188\),其中172.122.211.185作为master,其它三台作为slaves,保持四台机器的jdk和jmeter一致。
注意:四台机器互相ping通
1、修改master的bin/jmeter.properties文件
remote_hosts=172.122.211.186:1099,172.122.211.187:1099,172.122.211.188:1099
server_port=1099 #默认端口
server.rmi.ssl.disable=true # 保证ssl传输没有问题
2、修改所有slaves的bin/jmeter.properties文件
remote_hosts=127.0.0.1 #保持默认即可
server_port=1099 #端口需要与master中写的端口保持一致
server.rmi.ssl.disable=true # 保证ssl传输没有问题
3、启动所有slaves,进行监听
./jmeter-server
#若报错Cannot start. localhost is a loopback address,则用以下命令
./jmeter-server-Djava.rmi.server.hostname=172.122.211.186 #hostname指定自己的IP
4、master下进行压测
./jmeter -n -t test.jmx -r -l test-result.jtl # -r 代表使用分布式压测