jmeter压力测试 -——2021.05

目录

一、概述

项目性能背景及目的

测试工具

二、测试策略及规则

策略

规则

三、压测过程

四、遇到问题及总结

参考资料


一、概述

项目性能背景及目的

背景:需要测试一个平台的数据写入及查询能力,以此考虑是否需要扩大内存

目的:本次压测是为了测试数据写入和查询接口访问的最大并发量

测试工具

Apache jmeter-5.4.1

二、测试策略及规则

策略

本次测试主要涉及两种压测模式

1、数据写入和查询接口分别测试,获取最大并发量

2、数据写入+查询叠加测试,获取同时操作的最大并发量

规则

以500并发为基点,500并发增长,设置为永久循环,请求和响应时间均为3000ms,待运行稳定后手动结束进程;逐步增加并发量,已获取出现异常时的并发量;出现异常超过1%时,停止增加,回退上一步操作,复测当前并发量下的可用性

三、压测过程

前提:已提供接口调试正常

1、jmeter工具新建测试计划,添加线程组,设置线程数、启动时间、循环测试、持续运行时间

设置持续时间后,上边的循环次数设置没有效果,这样设置为了防止之后并发量和请求量过大时,测试工具卡死,不能停止;这样到持续时间后会自动停止

2、添加需要的cookies、header管理器、http请求、查看结果数、聚合报告等监听设置,详见jmeter工具的使用教程

3、点击运行,查看结果数及聚合报告中的平均时间、错误率及吞吐量等信息,请求正常且没有错误时继续增加线程数,直到出现错误后回退。

4、查看错误请求,获取报错信息,并调整数据,生成脚本。

5、jmeter本身会消耗一定的性能,所以要在非GUI模式下测试

非GUI模式有两种方式,一种为jmeter+ant,jmeter生成脚本,ant运行,详见jmeter+ant+Jenkins平台内容

第二种为jmeter自带的运行命令,在jmeter启动时显示的窗口里

  •  该命令需在jmeter安装bin目录下执行(即使添加了环境变量,直接在命令窗口也是无法运行的)
  • 命令参数说明:
  • -n    非GUI模式下运行     
  • -t     要运行的jmeter文件路径,以.jmx为后缀
  • -l     生成的测试结果保存路径+名称,为.jtl格式,该文件在保存路径下不存在;若要生成测试report,则该文件的路径需和向生成报告的路径一致
  • -e    生成测试报告,不生成报告可不加该参数,之后也可以单独根据测试结果生成报告
  • -o    生成报告的路径,该路径对应的文件夹下必须为空,否则会报错

6、分析压测结果,整理压测报告

四、遇到问题及总结

1、压测前需明白压测点及压测目的

2、明白jmeter线程组、启动时间和循环次数设置之间的关系,启动时间、循环次数不是随意设置的,有相应的计算公式,若在最后一个线程启动时第一个线程已经结束执行,这样并没有达到压测的目的;

解决办法:

可以通过计算来设置或者添加同步定时器或constant throughput timer解决该问题。另jmeter提供的插件设置stepping thread Group 和 concurrency thread Group阶梯式加压,存在问题是设置的总并发量很小,但是造成的请求量很大,和线程组得出的并发量相差甚远,未明白其中的问题

3、电脑端口号的限制,当请求量过大时,请求会报如下错误,

解决办法:

这是电脑本身端口号限制,Windows给 TCP/IP链接的端口为1024-5000,每次需要4分钟来回收,当存在大量请求时导致端口被占满,出现报错;解决办法修改注册表,win+r输入regedit打开注册表,输入下方路径查询

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

右键新增64位的DWORD,名称为MaxUserPort,十进制,数值为65534(能设置的最大端口号),继续新增DWORD,名称为TCPTimedWaitDelay,十进制,数值为30;修改后需重启电脑才能生效。

Linux和Mac也需要修改,端口号范围和win不同,但是Mac在实际分布式操作时没有生效,未找到原因

补充:16G电脑到3百多万的总请求量时又报出上方错误,这个是在两台电脑分布式测试的,一台电脑报出内存溢出,修改jmeter.bat文件中HEAP的大小,之后单台机器总请求量近4百万没有报错

4、jmeter本身非GUI运行时,报错

File"xxxx.jtl' does not contain the field names header, ensure the jmeter.save.saveservice.* properties are the same as when the CSV file was created or the file may be read incorrectly when generating report

解决方法:jmeter.properties 文件中该行设置为=csv (在使用ant执行build文件时,需设置为xml;中间用逗号隔开,但是这样设置后jmeter运行还是报错,需要把xml删掉)

jmeter.save.saveservice.output_format=csv

5、超时设置报错

Non HTTP response code: org.apache.http.conn.ConnectTimeoutException/Non HTTP response message: Connect to http:port [\/http] timed out

 需查看具体请求响应时间是否超过设置的3000ms,超出会显示该问题,未超出时仍显示该问题

6、压测报告怎么写好真是个问题。。。

7、刚开始测试使用的是jmeter-5.1.1版本,安装了一部分插件,测试结果并发量仅为800,与其他工具测试结果10000有一定差距,又下载了最新版本进行的测试,但是有些插件不支持高版本,如查看CPU的使用

参考资料

Jmeter5.3非GUI模式,从配置到导出报告问题整理_does not contain the field names header, ensure th-CSDN博客                          (非GUI模式下运行存在的问题)

https://www.cnblogs.com/atwanli/articles/4908475.html                                  (测试报告参考)

https://www.cnblogs.com/imyalost/p/7658816.html                                          (阶梯式加压插件的使用)

https://blog.csdn.net/hsd412237463/article/details/49929173                          (jmeter线程及循环次数相关内容)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值