缘起
公司的Elasticsearch流量日益减少,经过评估,我们计划迁移到成本更低的Mysql集群上,需要对接口进行压力复测
版本
- JDK17(会有兼容性问题,建议使用JDK17之前的版本)
- Jmeter 5.2.1
windows系统下临时端口不够用问题
java.net.BindException: Address already in use: connect
解决方案:
- 增加临时端口数量:网上一搜一大堆,不再赘述
- Jmeter线程组去掉
Use KeepLive
选项
Jmeter GUI配置的csv文件迁移后找不到问题
大多的Jmeter在使用GUI配置好后都会生成.jmx
文件并使用命令启动进行压测,我是在windows上配置好压测脚本并生成jmx文件放在服务器上使用命令执行:
/opt/app/apache-jmeter-5.2.1/bin/jmeter -n -t /opt/app/jmx_files/xxx接口-单压-100并发-5分钟.jmx -l /opt/app/jtl_files/xxx接口-单压-100并发-5分钟.jtl -e -o /opt/app/jmeter_result
出现错误:
File xxx.csv must exist and be readable
原因是我在windows下设置了csv的绝对路径,但在服务器上没这个路径导致报错。
解决方案:
- 使用服务器绝对路径并把csv文件放在这个绝对路径下
- 使用跨平台配置,csv路径设置为
${__P(user.dir,)}${__P(file.separator,)}xxx.csv
,然后把xxx.csv文件放在Jmeter home目录下bin下,并在bin中启动jmeter - 如果你已经配置好并且生成了大量的jmx文件,不想回去一个个的调整,可以使用文本编辑器打开jmx文件,搜索到路径后统一替换
Jmeter 与jdk兼容性问题
java.lang.IllegalStateException: Begin size 0 is not equal to fixed size 5
原因是:在Java 17中,当消费者初始数组大小大于流大小时,stream.toArray()会抛出异常。
参考连接 https://www.saoniuhuo.com/question/detail-2760135.html
解决方案:
截止到文章发表日,JDK17未修复此问题,换成17以下的版本即可。