使用JMeter做压力测试:安装、入门、结果分析

60 篇文章 0 订阅
60 篇文章 1 订阅

在这里插入图片描述
等到服务上线后,在业务压力的冲击下,会发现程序运行非常的慢,或者是宕机,莫名其妙的出现各种问题,只会进行一些无脑的硬件资源扩容,扩容真的能解决问题吗?

能解决的问题其实非常有限,同时也会带来新的问题, 资源浪费 !因此要确保项目上线稳定可靠,必须要性能压力测试,便于早发现服务问题,早解决性能问题。降本提效 ,始终是技术人员在企业中最能体现价值的核心技能。

当然,随着公司规模的扩张,部门扩张对每个人的要求不再是全能型,而是专业人才。在企业里压力测试会专门交给测试人员去做,但是身为后端研发工程师,对压力测试的技术也必须要懂要会,毕竟在企业中,最有机会成为技术Leader就是后端研发工程师,技术Leader必须是个全面人才。

要想成为技术Leader,压力测试就必须得会,那么今天我们就来谈谈压力测试得一些内容,主要从以下这些内容进行分享:

  • 常用得压测工具
  • 压测环境准备
  • 压测入门,压测结果分析
  • 常用参数解析

好了,废话不多说,下面进入正题!!!

常用压测工具

Apache的ab压力测试

Nginter 韩国研发

Arthas 阿里测试工具

JMeter : 可视化的测试工具

注意:测试容易受到网络抖动的干扰,服务器硬件配置环境影响;因此压力测试一般情况下,都应该在内网进行,不在外网去测试。

压测机环境准备:JMeter部署

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试 静态和动态资源 ,例如静态文件、Java 小服务程序 、 CGI 脚本 、 Java 对象 、 数据库 、 FTP 服务器等等。

一 JMeter下载安装&启动&配置

JMmeter镜像下载地址:jmeter.apache.org/

Windows可以使用图形化界面进行测试,Linux建议使用命令模式进行测试。但是为了测试的便捷性,我们使用JMeter的图形化界面进行压力测试。

1、使用Windows方法进行启动

图片

2、配置外观

图片

3、中文简体

需要修改jmeter.properties。

图片

图片

language=zh_CN,好了,JMeter启动使用是很简单的。

二 入门案例

疑问:SpringBoot理论上线?200TPS。为什么单体的SpringBoot并发怎么这么高?9000+。

1、新建压力测试

图片

2、配置线程组:

图片

线程属性说明:ramp-up背后含义不好理解,案例做完有详细解释。

线程数:5000,线程数量

ramp-up:表示在指定时间之内把这些线程全部启动起来。这里表示 5s以内把 5000 个线程全部启动起来

循环次数:20 ,表示把 5000 thread /5s 循环 20 次

3、配置HTTP接口

http://localhost:8080/user/findByUsername/llsydn

图片

图片

选择Java,选择keepalive方式,使用长连接的方式,防止频繁的建立连接,关闭连接消耗性能,这样我们的压测的性能消耗就会有部分消耗在建立,关闭连接的网络消耗上,这样会导致我们的压测数据不准确。

4、配置结果监听

配置监听器:监听压测结果【聚合报告和汇总结果很类似,看一个就行】。

1)聚合报告:查询结果信息聚合汇总,例如样本、平均值、通吐量、最大值、最小值…

图像结果:分析了所有请求的平均值、终止、偏离值和通吐量之间的关系。

2)汇总结果:汇总压测结果。

汇总图:将压测结果以图像形式展示。

3)察看结果树:记录每一次压测请求。

图片

添加方法,按照上图所示即可。

图片

三 压测结果解释

1、聚合报告

图片

样本(sample): 发送请求的总样本数量。

响应时间(单位ms):

平均值(average):平均的响应时间;

中位数(median): 中位数的响应时间,50%请求的响应时间;

90%百分位(90% Line): 90%的请求的响应时间,意思就是说90%的请求是<=1765ms返回,另外10%的请求是大于等于1765ms返回的;

95%百分位(95% Line): 95%的请求的响应时间,95%的请求都落在1920ms之内返回的;

99%百分位(99% Line): 99%的请求的响应时间;

最小值(min):请求返回的最小时间,其中一个用时最少的请求;

最大值(max):请求返回的最大时间,其中一个用时最大的请求。

异常(error): 出现错误的百分比,错误率=错误的请求的数量/请求的总数。

吞吐量TPS(throughout): 吞吐能力,这个才是我们需要的并发数。

Received KB/sec:每秒从服务器端接收到的数据量。

Sent KB/sec:每秒从客户端发送的请求的数量。

2、汇总报告

图片

样本(sample): 发送请求的总样本数量。

响应时间(单位ms):

平均值(average):平均的响应时间;

最小值(min):请求返回的最小时间,其中一个用时最少的请求;

最大值(max):请求返回的最大时间,其中一个用时最大的请求;

标准偏差:度量响应时间分布的分散程度的标准,衡量响应时间值偏离平均响应时间的程度。标准偏差越小,偏离越少,反之亦然。

异常(error): 出现错误的百分比,错误率=错误的请求的数量/请求的总数。

吞吐量TPS(throughout): 吞吐能力,这个才是我们需要的并发数。

每秒接收 KB/sec:每秒从服务器端接收到的数据量。

每秒发送KB/sec:每秒从客户端发送的请求的数量。

平均字节数。

3、察看结果树

记录了样本中的每一次请求:

图片

4、图形结果

分析了所有请求的平均值、终止、偏离值和通吐量之间的关系:

横坐标:为请求数量,单位个数

纵坐标:响应时间,单位ms

图片

四 线程属性参数原理

线程属性参数原理结论:

线程数设置:根据项目并发需求确定;

Ramp-Up Period设置:不宜过小也不宜设置过大,经验的做法是设置ramp-up period等于总线程数;

循环次数:决定测试执行时间。

1、参数基本概念

线程数:线程组常用来模拟并发用户访问,每个线程均独立运行测试计划。

循环次数:循环执行多少次操作。循环次数表示了循环执行多少次操作!循环次数直接决定整个测试单个线程的执行时间,和整体测试执行时间。

单线程执行时间 = 单请求平均响应时间 * 循环次数

整个测试耗时 = 单线程执行时间 + (Ramp-Up - Ramp-Up / 线程数)

Ramp-Up:建立全部线程耗时。

Ramp-Up Period(in-seconds)代表隔多长时间执行, 0 代表同时并发;

用于告知JMeter 要在多长时间内建立全部的线程,默认值是 0 。

2、为什么需要有Ramp-Up Period,立刻创建出来所有的线程不是更好?

目的是为了模拟大部分网站的真实用户并发场景。

对于绝大多数的网址或应用,更真实的情况是并发用户逐渐递增,而不是从一开始便立即有大量并发的用户,“ramp-up period”概念的引入可以覆盖测试这个场景。

好了,以上就是压力测试-JMeter安装、入门、结果分析的分享了。


好文推荐

听说转行软件测试只能自学,培训机构是个坑?

2023年,软件测试还能学吗?别学了,软件测试岗位饱和了…

从事软件测试8年,聊聊我是怎么从零基础到年薪40万的

为什么说测试岗位是巨坑?10年测试人告诉你千万别上当

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值