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

2023-11-12

目录

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,免费领取教程】

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

压力测试-JMeter安装、入门、结果分析 的相关文章

随机推荐

  • 4.5.7 c++求灯塔数量

    4 5 7 灯塔数量 有一八层灯塔 每一层的灯数都是上一层的一倍 共有765盏灯 求最上层和最下层的灯数 include
  • C++:map&&set的简单使用

    目录 关联式容器 键值对 树形结构的关联式容器 set find与count multiset map multimap 关联式容器 在初期我们接触到的vector list deque queue等 这些容器都称为序列式容器 因为其底层为
  • python for循环九九乘法表_python初学者-使用for循环做一个九九乘法表

    原博文 2020 03 22 08 51 for i in range 1 10 for j in range 1 i 1 print j i i j end end 以 结尾 print 相关推荐 2019 12 24 10 44 whi
  • 自学SQL习题答案整理(lesson4--)

    前几天看到一个学SQL的网站 感觉挺好的 但是比较少人用 链接 自学SQL 在这里放上一部分题目的答案 自己在mysql里实现了一下 方便以后再做这个练习的时候自查 主要是学习一些查询语句的运用 SELECT distinct direct
  • 力扣算法合集

    algo 鸡汤篇 排序算法 二叉树 哈希表 栈和队列 数组 链表 字符串 算法套路 双指针 排序 贪心思想 二分查找 搜索 动态规划 斐波那契数列 矩阵路径 数组区间 分割整数 最长递增子序列 01背包 股票交易 字符串编辑 算法题解 动态
  • 突破Cloudflare验证码的秘密方法

    Cloudflare是一种广泛使用的验证码方式 它旨在取代传统的CAPTCHA 提供更简单 更私密的验证方式 以区分真实用户和机器人 然而 对于爬虫工程师而言 这也带来了一些挑战 理解Cloudflare验证码的工作原理 在突破Cloudf
  • 手把手带你理解Vue的列表渲染?

    概念 v for 指令基于一个数组来渲染一个列表 v for 指令需要使用 item in items 形式的特殊语法 其中 items 是源数据数组 而 item 则是被迭代的数组元素的别名 2 代码
  • 关于PN节为什么会形成电场

    这个问题我纠结了很久 后面终于弄明白了 来备注一下 防止下次又忘记了 首先 我们了解一下P型半导体和N型半导体 P型半导体 硅晶体在参入 3价元素 用硼来举例 后 硅原子会和硼原子形成共价键 形成共价键的原因我们不需要知道 就当它们发生了反
  • unity 第二次作业

    3D游戏设计 Unity 一 简答题 1 GameObject 和 Assets的区别和联系 是游戏中实实在在的游戏项目文件夹中所需要堆放的资源 比如 var obj Resource Load Prefabs testItem 这个obj
  • 23哈尔滨工程大学计算机电子信息复试经验

    哈尔滨工程大学计算机电子信息复试经验 0 前言 1 笔试 2 机试 2 1 备考分析 2 2 备考建议 3 面试 3 1 政治 3 2 英语 3 3 专业基础 3 4 工程项目 0 前言 今年的复试拖的太长了 复试要求 名单等迟迟不出 复试
  • React Hooks 使用详解

    本文对 16 8 版本之后 React 发布的新特性 Hooks 进行了详细讲解 并对一些常用的 Hooks 进行代码演示 希望可以对需要的朋友提供点帮助 一 Hooks 简介 Hooks 是 React v16 7 0 alpha 中加入
  • 多益网络校招笔试题(前端工程师)

    1 写出inline和inline block的差别 布局方式相同 唯一的区别在inline block可以设置宽高 inline不可以 另外 inline设置上下内边距和上下外边距会造成一些mess 详见 What is the diff
  • 源码编译安装部署LAMP平台(使用Apache,MySQL与PHP搭建Discuz论坛实例)

    文章目录 一 LAMP平台与编译安装 一 LAMP平台概述 二 构建LAMP平台顺序 二 编译安装的优点 三 各组件的主要作用 二 部署步骤 一 编译安装Apache httpd服务 二 编译安装mysqld 服务 三 编译安装PHP 解析
  • 一定能用到的简单但实用的五种按钮样式(HTML+CSS步骤详解,含详细注释)

    前言一 按钮在前端开发中往往是一个必不可少的元素 也有许多精美好看的样式资源供开发者直接使用 但博主认为 对于初学者而言 总是去cv别人做好的 而不理解其中的原理 是很不好的 本人作为一名计科的学生 在大二也选修了校内的前端基础教程的课 但
  • 【Blender学习】界面

    界面 改变语言 学习笔记 改变语言 将blender改变成中文可以通过一下步骤 1 选择Files gt user preference 2 选中右下角inernational Fonts里的inerface和tooltips 再选择lan
  • Xmake实战---xmake 与 vscode 集成环境使用

    xmake vscode 插件介绍 我们之前的所有实验 都是使用 xmake 的命令行程序在终端下操作完成的 这对于一些初学者来说还是有不少门槛的 并且操作起来也不能够像其它 IDE 等带有可视化界面的开发环境那样顺手 尤其是代码的编辑 编
  • 05-RabbitMQ之原生API使用

    使用RabbitMQ提供的原生客户端API进行交互 一 Maven依赖
  • Tailwind CSS入门(二)——基本介绍和特性

    上一篇文章简要的介绍了原子类CSS 以及个人对语义化 原子化的一些经验和理解 从这篇文章开始 正式开始分享Tailwind CSS的特性 使用和技巧 Tailwind CSS是一个为快速开发而精心设计的原子类CSS框架 在此我们将搭建一个V
  • Vivado初体验LED工程

    文章目录 前言 一 PL 和 PS 二 LED 硬件介绍 三 创建 Vivado 工程 四 创建 Verilog HDL 文件 五 添加管脚约束 六 添加时序约束 七 生成 BIT 文件 八 仿真测试 九 下载测试 前言 本节我们要做的是熟
  • 压力测试-JMeter安装、入门、结果分析

    目录 1 写在前面 2 常用压测工具 3 压测机环境准备 JMeter部署 3 1 JMeter下载安装 启动 配置 3 2 入门案例 3 2 3 压测结果解释 3 2 4 线程属性参数原理 1 写在前面 等到服务上线后 在业务压力的冲击下