1.环境:分布式压力测试,用两台win10华硕笔记本作为slave,服务器部署在Linux上
2.配置文件:在master机器上,更改bin目录下jmeter.properties文件,添加remote_hosts=ip+端口(slave)
3.slave机器的jmeter.properties添加
server_port=8888(自定义端口号)
server.rmi.localport=8888
4.有耐性jmeter之前,slave机器需要先执行jmeter-server.bat,保持运行状态
5.进入jmeter后,添加请求,然后点击运行->远程全部启动,开始进行压测
6.可以在jmeter-server.bat开启的命令行中能够查看任务运行情况
7.JDBC参数化
ps:
聚合报告
Samples:样本数
Average:平均响应时间
Median:中位数,50%响应时间小于此值
90%line:90%响应时间小于此值
Min:最短响应时间
Max:最大响应时间
Error:未命中数/比率
Throughput:吞吐量——每秒完成请求事务数
Kb/sec:每秒接收数据量
踩过的坑:
1.master,slave需要关闭防火墙,要不然你真的不知道为什么下发总是失败,ping不通,但是本机却可以正常跑脚本
2.如果线程开启过多,可能会使网络阻塞,master无法控制slave,jmeter数据统计会出现异常,因此需要根据实际硬件配置,网络带宽进行线程数量以及ramp-up设置
3.断言尽量多设置几条,很多时候网络延时会是结果出现很大的误差,需要根据断言进行判断结果是否正确
4.由于MySQL数据类型为timestamp,默认值为0000-00-00,所以查询时需要带时间戳,否则会提示Response message: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
例如:jdbc:mysql://${ip}:${port}/${dbname}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true