百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

压力测试-JMeter安装、入门、结果分析

bigegpt 2024-08-04 11:22 1 浏览

1.写在前面

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

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

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

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

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

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

2.常用压测工具

  1. Apache的ab压力测试
  2. Nginter 韩国研发
  3. Arthas 阿里测试工具
  4. JMeter : 可视化的测试工具

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

3.压测机环境准备:JMeter部署

官网:https://jmeter.apache.org/
教程:http://www.jmeter.com.cn/2747.html
复制代码

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

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

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

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

1 )使用windows方法进行启动

2 )配置外观

3 )中文简体

需要修改jmeter.properties

language=zh_CN

好了,jmeter启动使用是很简单的。

3.2 入门案例

疑问: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. 察看结果树:记录每一次压测请求

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

3.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

3.2.4、线程属性参数原理

线程属性参数原理结论:

  • 线程数设置:根据项目并发需求确定
  • 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安装、入门、结果分析的分享了。

可能内容有点长,大家伙耐心点看喔!!!

个人理解,可能也不够全面,班门弄斧了



相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...