Jmeter 压测分析

当JMeter在进行性能测试时未达到预期效果,可能是由于端口限制、线程数过多或内存不足导致。端口限制问题可通过调整系统最大端口连接数解决;线程数过多可能导致连接失败或错误率上升,可考虑循环创建线程和使用keep-alive;内存不足则可能产生.hprof文件,可以通过增大JVM堆内存设置缓解。此外,建议定期清理日志文件和使用分布式压测。
摘要由CSDN通过智能技术生成

原文由周小丽发表于TesterHome社区,点击原文链接可以和作者直接交流

如果 jmeter 达不到预期的性能指标,可查看压测机器的性能,是否因为内存、网络、cpu 占用导致的瓶颈。

一、端口不够用

压测的线程数过多时,或者线程没有及时释放,会导致 TCP/IP 连接端口已达到最大限制,jmeter 会报错
【报错信息】Non HTTP response code:java.net.BindException
【原因分析】windows 提供给 TCP/IP 连接的端口号是 1024-5000,并且要四分钟左右循环回收,这就导致我们短时间内频繁调用大量请求时,端口号被占满
【解决方案】修改系统的最大端口连接数

TCP 客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000 ,也就是说默认情况下,客户端最多可以同时发起 3977 个 Socket 连接。我们可以修改如下注册表来调整这个动态端口的范围
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)

二、线程数

【异常现象】大量请求出现连接失败,或者压测的错误率异常高,但服务器性能并没上去
【原因分析】线程数已达到瓶颈
【解决方案】循环创建线程,勾选 keep-alive(一般默认是勾选的),可复用线程,即一个 http 请求处理完之后,另外一个 http 请求会从这个连接走

三、内存不足

【异常现象】jmeter 安装目录下产生大量很大的.hprof 文件
【原因分析】这种.hprof 文件的产生是内存泄漏引起的
【解决方法】
windows 环境下,修改 jmeter.bat:
set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
改为:
set HEAP=-Xms256m -Xmx1024m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m
PS:heap 最多设置为物理内存的一半,默认设置为 512M.如果 heap 超过物理内存的一半,可能运行 jmeter 会慢,甚至出现内存溢出,原因 java 比较吃内存,占 CPU.

四、建议

1、定期清理 jmeter 生成的日志文件:jmeter.log 和 jmeter-server.log(安装目录下)
2、压测线程数过大时,可采用分布式压测,以命令行执行方式,别使用 GUI 方式压测

TPS:事务数/秒 一个事务可能包含多个查询
QPS:查询数/秒(每秒响应的请求数)
QPS(TPS):每秒钟 request/事务 数量
并发数: 系统同时处理的 request/事务数
QPS(TPS)= 并发数/平均响应时间

比如说报错率在某一次中超过了预期,则该值时已经存在性能瓶颈;tps 达到某一值时,不升反降,则该值存在性能瓶颈;响应时间的值开始缓慢增加后来剧增,则达到性能瓶颈。

相关阅读:
Selenium 定位总结
以上是今天的分享,你学废了吗~
想学习更多干货知识和前沿技术?
想结识测试行业大咖和业界精英?
欢迎关注2022 MTSC大会(第十届中国互联网测试开发大会)>>>

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值