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

news2024/11/26 13:26:16

目录

1.写在前面

2.常用压测工具

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

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

3.2 入门案例

3.2.3、压测结果解释

3.2.4、线程属性参数原理


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. 聚合报告:查询结果信息聚合汇总,例如样本、平均值、通吐量、最大值、最小值...
    1. 图像结果:分析了所有请求的平均值、终止、偏离值和通吐量之间的关系。
  2. 汇总结果:汇总压测结果
    1. 汇总图:将压测结果以图像形式展示
  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安装、入门、结果分析的分享了。

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

【留言:777,免费领取教程】

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

如果觉得有收获的,帮忙点赞、评论、收藏一下呗!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CATIA和SolidWorks孰强孰弱?对比一下就知

寻找合适的 CAD 程序可能会很棘手&#xff0c;因为它是一种您将投资并使用的工具&#xff0c;您需要确保做出正确的决定。这篇文章将用于帮助区分 CATIA 和SOLIDWORKS之间的差异&#xff0c;以帮助您确定两者中哪一个最适合您的业务。 谁使用 CATIA&#xff1f; CATIA 于 198…

Selenium教程__环境安装(1)

Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。 Selenium基本上支持主流的浏览器&#xff0c;包括IE&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google Chrome&#xff0c;Opera等。 …

请求与响应

设置映射路径 在不同的bean中可能会出现相同名字的路径&#xff0c;这样的情况会产生冲突&#xff0c;为了解决这个冲突我们可以设置模块名作为请求路径前缀 Controller RequestMapping("/book") public class BookController {//设置当前操作的访问路径RequestMa…

Rust语言从入门到入坑——(4)Rust语法(下)

文章目录 0 引入1、结构体1. 1 结构体1. 2 结构体方法1. 3 元组结构体 2、枚举类2.1 match2.2 Option 枚举类 3、集合3.1 向量&#xff08;Vector&#xff09;3.2 字符串&#xff08;String&#xff09;3.1 映射表&#xff08;Map&#xff09; 4、总结 0 引入 在这里我们需要介…

DOM4J解析web.xml文件,实例化Servlet

1、DOM4J解析web.xml文件实例化Servlet 原理分析&#xff1a;我们解析用户在地址栏中输入的地址信息如add.do,用这个地址去web.xml文件中通过DOM4J技术&#xff0c;解析判断add.do对应的是哪个url-pattern&#xff0c;找到后获取对应的servlet-name。在用这个servlet-name去找…

servlet规范过滤器

我们可以把servlet程序看作是一个最终要执行的目标。我们可以使用过滤器filter来添加过滤代码&#xff0c;这个过滤代码可以添加到servlet执行之前&#xff0c;也可以添加到servlet执行之后。Filter可以做到在servlet这个目标程序执行之前过滤&#xff0c;也可以在目标程序执行…

【深度学习】BERT变种—百度ERNIE 3.0

预训练的模型在各种自然语言处理&#xff08;NLP&#xff09;任务中取得了最先进的成果。扩大预训练语言模型的规模可以提高其泛化能力。然而&#xff0c;现有的大规模预训练模型&#xff0c;主要依赖纯文本学习&#xff0c;缺乏大规模知识指导学习&#xff0c;模型能力存在局限…

尚硅谷大数据Flink1.17实战教程-笔记02【部署】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink概述、Flink快速上手】尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】尚硅谷…

pycharm-设置python文件模板及常用的模板内容使用

pycharm设置文件和代码&#xff08;File and Code Templates&#xff09;模板步骤如下&#xff1a; 1.pycharm工具栏"file"->"Settings"->"Editor"->"Code Style"->"File and Code Templates",点击右侧python …

Badboy内置浏览器,提示脚本错误解决方法

Badboy内置浏览器&#xff0c;提示脚本错误解决方法 使用Badboy录制脚本的时候&#xff0c;浏览器弹框提示 “&#xff01;当前页面的脚本发生错误。” 使用Badboy录制脚本的时候&#xff0c;弹框提示“当前页面的脚本发生错误” 解决方案1&#xff1a;在弹窗中选中不再弹出…

Java IO 学习总结(三)BufferedInputStream 缓冲流

Java IO 学习总结&#xff08;一&#xff09;输入流/输出流 Java IO 学习总结&#xff08;二&#xff09;File 类 Java IO 学习总结&#xff08;三&#xff09;BufferedInputStream 前言&#xff1a; 学习IO流&#xff0c;记录并分享。文章如有错误&#xff0c;恳请指正。 B…

云上使用 Stable Diffusion ,模型数据如何共享和存储

随着人工智能技术的爆发&#xff0c;内容生成式人工智能&#xff08;AIGC&#xff09;成为了当下热门领域。除了 ChatGPT 之外&#xff0c;文本生成图像技术更令人惊艳。 Stable Diffusion&#xff0c;是一款开源的深度学习模型。与 Midjourney 提供的直接将文本转化为图像的服…

基于JAVA的心理咨询预约系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 心理健康在现代社会中…

vue js vue3 uniapp日期操作工具类组件,格式化、加减日月年

官网文档 官网&#xff1a;https://momentjs.com/ 文档&#xff1a;https://momentjs.com/docs/ 安装 npm install moment -s全局引用 import moment from moment;//uniapp vue3 全局引用 app.config.globalProperties.$moment moment;日期格式 示例&#xff1a;YYYY-MM-…

Unity3d_shader_Outline()

1、[Unity] 引入“全局轮廓”&#xff0c;只需附加组件即可使用轮廓着色器 【Unity】コンポーネントをアタッチするだけでアウトラインシェーダが使用できる「Global Outline」紹介 - コガネブログ 下载&#xff1a;https://github.com/rickomax/globaloutline 2、[Unity] 綺…

latent-diffusion model环境配置,这可能是你能够找到的最细的博客了

文章目录 前言一、环境配置1.创建requirement.txt文件2.提前从Github上下载好taming-transformers和clip3.创建conda环境&#xff0c;并安装requirement.txt文件4.安装torch 1.85.本地下载Bert模型权重&#xff0c;修改加载Bert的代码6.测试环境 2.训练自己的LDM模型 前言 最近…

几个基于springboot在线服务过段时间突然停掉的原因

有几个基于springboot的服务今天发现突然停掉了&#xff0c;也不知道什么原因&#xff0c;所以只能看一下日志了 主要日志如下&#xff1a; 2023-06-17 14:26:21.775 DEBUG o.s.b.f.s.DefaultListableBeanFactory- Retrieved dependent beans for bean dataSource: [mybatisCo…

使用了并发工具类库,线程安全就高枕无忧了吗?

1、说明 在代码审核讨论的时候&#xff0c;我们有时会听到有关线程安全和并发工具的一些片面的观点和结论&#xff0c;比如“把 HashMap 改为 ConcurrentHashMap&#xff0c;就可以解决并发问题了呀”&#xff0c;“要不我们试试无锁的 CopyOnWriteArrayList 吧&#xff0c;性能…

并发线程 (2) - C++线程间共享数据【详解:如何使用锁操作】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 期待你的关注哦&#xff01;&#xff01;&#xff01; 快乐在于态度&#xff0c;成功在于细节&#xff0c;命运在于习惯。 Happiness lies in the attitude, s…