手把手教你压测

什么是压力测试?如何进行Jmeter压力测试 软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。常用的压力测试软件有:LoadRunner、Apache JMeter、NeoLoad、WebLOAD、Loadster、Load impact、CloudTest、Loadstorm、阿里云PTS等等,本文介绍的是使用Apache JMeter来进行压力测试。同样选择线程组,右键添加监听器。 阅读详情

身为后端程序员怎么也要会一点压力测试相关的技术吧, 不然无脑上线项目万一项目火了进来大量请求时出现程序执行缓慢, 宕机等情况你肯定稳稳背锅, 而且这个时候短时间内还没办法解决, 只能使用物理扩容CPU, 内存, 更换网络等几种方式来解决问题, 妥妥的为公司增加支出好吧, 下一个被开的就是你

都是想跑路拿高薪的打工仔, 身上怎么可以背负污点, 赶紧学一手压力测试进行保命, 我先学为敬

本篇文章主打一个学完就会, 奥利给

文中出现软件的版本

  • JMeter: 5.5
  • ServerAgent: 2.2.3

性能调优对各个开发岗位的区别

各个岗位对性能调优的关键节点

  • 前端工程师:
    • 首屏时间: 初次访问项目等待加载时间
    • 白屏时间: 刷新页面到数据全部展示时间
    • 可交互时间
    • 完全加载时间
  • 后端工程师
    • RT: 响应时间
    • TRS: 每秒事务数
    • 并发数: 这应该不会解释了吧
  • 移动端工程师
    • 端到端相应时间
    • Crash率
    • 内存使用率
    • FPS

主要讲一下后端工程师(Java), 毕竟这是吃饭的家伙
对于后端工程师来说, 影响性能的地方主要有两个

  • 数据库读写, RPC, 网络IO, 代码逻辑复杂度, 缓存
  • JVM(Throughput) - JVM(Throughput)

影响性能的关键要素

  • 产品设计
    • 产品逻辑
    • 功能交互
    • 动态效果
    • 页面元素
  • 基础网络
  • 代码质量&架构
    • 架构不合理
    • 研发功底和经验不足
    • 没有性能意识: 只实现功能不注重代码性能, 当业务上量后系统出现连锁反应, 导致性能问题增加
    • 数据库: 慢查询, 过多查询, 索引使用不当, 数据库服务器瓶颈
  • 用户移动端环境
    • 设备类型&性能
    • 系统版本
    • 网络(WiFi, 2G, 3G, 4G, 5G)
    • 硬件及云服务(服务器硬件, CPU, 内存..)

1. 初步了解压力测试

1.1压力测试是什么

压力测试是针对特定系统或组件, 为要确定其稳定性而特意进行的严格测试. 会让系统在超过正常使用条件下运作, 然后再确认其结果 对系统不断施加压力, 来预估系统`负载能力`的一种测试

一般而言, 只有在系统基础功能测试验证完成, 系统趋于稳定的情况下, 才会进行压力测试

1.2压力测试的目的

当负载主键增加时, 观察系统各项性能指标的变化情况是否有异常

发现系统的性能短板, 进行针对性的性能优化

判断系统在**高并发情况下是否会报错**, 进行是否会挂掉

测试在系统某个方面达到瓶颈时, 粗略估计系统性能上限

1.3 压力测试的指标

指标含义
相应时间(RT)是指系统对请求作出响应的平均时间, 对于单用户的系统, 响应时间可以很好地度量系统的性能
吞吐量(Throughput)是指系统在单位时间内处理的数量, 每秒事务数TPS 也算是吞吐量的一种
资源利用率CPU占用率, 内存使用率, 系统负载, 网络IO
并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量, 用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求
错误率失败请求占比, 在测试时添加响应断言, 验证不通过即标记为错误, 若不添加, 响应码非200则为错误

评判系统性能, 主要考虑三个性能指标 RT, TPS, 资源利用率

上图充分的展示了响应时间, 吞吐量, 利用率和并发用户数之间的关系

随着并发用户的增加经过轻负载区, 达到最优并发数, 此时利用率高,吞吐量高, 响应时间短

但是如果用户数继续增加, 就会到达重负载区, 此时性能最大化, 但是当超过某一临界值(最大并发数)之后, 响应时间会急剧增加, 利用率平缓, 吞吐量急速下降

我们进行压测的目的主要就是测试出这个临界值的大小, 或者说, 我们系统当前能承受住的最大并发数

2. 压力测试工具 JMeter

老规矩, 先来一波软件介绍 JMeter是 Apache组织开发的基于 Java的开源压力测试工具, 具有体积小, 功能全, 使用方便等特点. 最初被设计用于 Web应用测试, 后来被扩展到其他测试领域.

常用压测工具:

  • Apache JMeter可视化的测试工具
  • LoadRunner 预测系统行为和性能的负载测试工具
  • Apache的 ab压力测试
  • nGrinder韩国研发的一款性能测试工具
  • PAS阿里测试工具

压测目标:

  • 负载上升各项指标是否正常
  • 发现性能短板
  • 高并发下系统是否稳定
  • 预估系统最大负载

2.1 安装 JMeter

写在前面, 需要 Java8环境, 没有的话需要去安装, 教程百度上一大堆

官网地址: jmeter.apache.org/

熟悉的download, 点他

开始下载(是真的慢)

解压之后进入 bin目录下, 双击 jmeter.bat, 就可以启动 JMeter了

上图可以看出, 在我们第一次打开界面时是英文的, 多少有点不友好, 接下来讲解一下怎么将语言更改为中文

2.2 设置 JMeter界面为中文

还是我们的 bin目录下, 有一个 jmeter.properties文件

双击打开, 搜索 language

去除 #号, 值更改为 zh_CN, 保存文件然后重启软件(双击jmeter.bat)

可以看到, 我们的 jmeter成功更改为了中文界面, 这对于我这种英语白痴来说是很舒服的

2.3 初步使用 JMeter

我们先随便创建一个测试用例, 就是简单测试, 同时讲解一下常用的参数

本次测试采用 20线程, 1秒启动时间, 循环100次, Get请求

2.3.1 创建线程组

  • 线程数: 虚拟的用户数, 一个用户占一个线程
  • Ramp-Up: 等待时间, 设置的虚拟用户(线程数)需要多长时间全部启动
  • 循环次数: 单个线程发送请求的次数
  • 调度器:
    • 持续时间: 该任务执行的时间
    • 启动延迟: 等待多少秒开始执行

2.3.2 创建 http请求

右键线程组-添加HTTP请求

这个中文讲解的很明白, 应该都看得懂的, 有疑问的评论区留言

2.3.3 结果树

结果树, 聚合报告, 图形结果只有新增, 解释在测试

线程组右键-添加-监听器-查看结果树

执行结果分析(启动之后显示界面)

列表列出了每一次的HTTP请求, 绿色的是成功, 红色的话就是失败

  • 取样器结果参数详解
    • Thread Name:线程组名称
    • Sample Start: 启动开始时间
    • Load time:加载时长
    • Latency:等待时长
    • Size in bytes:发送的数据总大小
    • Headers size in bytes:发送数据的其余部分大小
    • Sample Count:发送统计
    • Error Count:交互错误统计
    • Response code:返回码
    • Response message:返回信息
    • Response headers:返回的头部信息
  • 请求
    • 基本数据
    • 入参
    • 请求头
  • 相应数据
    • 响应码
    • 响应头

2.3.4 聚合报告

线程组右键-添加-监听器-聚合报告

执行结果分析(启动之后界面)

参数解释

  • 样本: 并发量
  • 平均值: 接口请求用时(单位毫秒)
  • 中位数: 请求用时中位数(单位毫秒), 例如2000请求以请求时间排序, 排名1000的用时时长
  • 90%百分位, 95%百分位, 99%百分位和中位数同理
  • 最小, 最大值: 请求用时最小和最大
  • 异常% : 请求中异常的百分比
  • 吞吐量: 单位时间内请求次数

2.3.5 图形结果

线程组右键-添加-监听器-图形结果

执行结果分析(启动之后显示界面)

  • 样本数目:总共发送到服务器的请求数。
  • 最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
  • 吞吐量:服务器每分钟处理的请求数。
  • 平均值:总运行时间除以发送到服务器的请求数。
  • 中间值:有一半的服务器响应时间低于该值而另一半高于该值。
  • 偏离:表示服务器响应时间变化、离散程度测量值的大小。

2.3.6 断言

断言主要用来判断结果返回是否符合预期

线程组右键-添加-断言-响应断言

假设我们接口的返回状态码字段为code, 200为成功, 那么就可以在断言这里进行配置, 来判断请求是否成功

3. JMeter插件

3.1 插件安装

首先说明 JMeter是不支持插件的, 所以我们先要 JMeter的插件允许插件下载, 这句话多少有点拗口

网址: Install :: JMeter-Plugins.org

点击上图红框即可下载插件, 前面说过了 JMeter是 Java8开发的, 插件对应的也是一个 jar包

下好之后就可以放在 JMeter安装目录下的 lib/ext/ 下了, 具体下载页面也有说明

上述操作结束之后, 在选项里面就可以看到插件中心Plugins Manager

弹出以下界面, 点击 Available Plugins搜索我们需要的插件Basic Graphs和Additional Graphs, 勾选上, 然后安装

Basic Graphs主要显示显示平均响应时间,活动线程数,成功/失败交易数等

Additional Graphs主要显示吞吐量,连接时间,每秒的点击数等

在安装成功之后, 在监听器会相应的多出很多的 jc开头的, 这就代表安装成功了

我使用的是 5.5版本的, 之前版本安装之后好像要手动重启, 5.5安装完会自动重启

4. Linux硬件监控

在压测过程中, 我们需要实时了解服务器的CPU, 内存, 网络, 服务器负载等情况的变化, 这个时候我们就需要对我们的 Linux系统进行监控, 通常来讲, 我们查询 Linux系统的资源占用情况可以使用以下几种方法

  • 使用命令: top, iostat, iotop等
  • 使用 Linux远程连接工具 FinalShell等
  • 宝塔
  • JMeter压测工具 PerfMon

在 JMeter中, 如果需要监控服务器硬件, 那么我们还需要安装 PerfMon插件

PerfMon监控服务器硬件,如CPU,内存,硬盘读写速度等

进入下述地址开始下载监控包: github.com/undera/perf…

下载好之后我们可以直接解压放到服务器上, 会看到有两个startAgent文件, 分别是Windows系统和Linux系统的启动脚本

我们直接启动就可以了, 如果脚本启动连接不上的话可以考虑更改脚本内容

例: Linux系统脚本更改为以下内容

## 默认启动运行 startAgent.sh 脚本即可

## 服务启动默认4444端口,根本连接不上,因此自己创建一个部署脚本文件对此进行部署,且把端口修改为7879

nohup java -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 7879 --tcp-port 7879 > log.log 2>&1 &

## 赋予可执行权限

chmod 755 startAgent.sh

启动成功之后, 脚本同级路径下会多出 log.log的日志文件

然后我们就可以配置 JMeter了, 线程组-监听器-jp@gc - PerfMon Metrics Collector

我是在本地启动了ServerAgent.bat进行测试, 执行结果如下所示:

注: 文件必须配置, 不然没有图像

具体的配置指标信息建议看官方文档, 太多了.... github.com/undera/perf…

ServerAgent闪退问题

Windows系统配置好ServerAgent启动之后窗口闪退可能是 jre版本问题, 可以从下面的链接下载老版的 jre

www.aliyundrive.com/s/Yzw3DZ74w…

下载好之后, 建议安装目录设置在ServerAgent/jre下

并更改startAgent.bat脚本, cd 到老版本 jre路径

本文内容到此结束了

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

全部资料获取

如何进行JMeter分布式压测?一个案例教你详细解读! 当前快速发展的互联网应用领域,高效的性能测试已经成为了确保在线应用质量和用户满意度的重要手段之一。 而JMeter分布式压测则是实现这一目标的最佳选择。然而,很多人并不知道如何使用JMeter进行分布式压测,更不知道如何获取准确的测试结果。 这篇引流文章将会向你介绍JMeter分布式压测的基本概念、工具和操作步骤,帮助你更加轻松地进行高效的性能测试。还等什么?赶紧跟着我们的案例来学习吧! 阅读详情

相关推荐

服务器硬件压力测试

服务器压力测试是检验服务器性能稳定性的最有效方式。在利旧场景中,业务还未部署的情况下,可以通过对服务器进行简单压力测试,提前暴露硬件问题。本文以基于3.10内核的Linux CentOS 7操作系统下压力测试为例注意:不要在生产服务器或已经部署业务的服务器上操作,可能会造成业务不可用、数据丢失,请谨慎操作。

qq_31055683的博客 1万+

压力测试基本概念

目录 一、压测是个啥?为啥要压测? 二、压测方案设计 1、压力场景 2、压测方案设计关注点 3、涉及到的知识点: 三、压测执行 四、压测报告关注点 一、压测是个啥?为啥要压测? 压测属于性能测试的一种: 性能测试的选择和需求有关,选择的场景不同,使用的性能测试方案均是不同的,性能是随着业务的发展,不断新的要求,不同的阶段,性能测试的频率不一样。 看到过网上有个馒头的例子: 一口气吃十个馒头,并发,压力(并发)测试,一口吃15个,20个,吃不下,一口吃18,能吃; 馒头一个.

weixin_40720301的博客 1万+

从零开始,用MATLAB/Simulink手把手搭建一个无刷直流电机(BLDC)的控制模型

本文详细介绍了如何使用MATLAB/Simulink从零开始搭建无刷直流电机(BLDC)控制模型。通过可视化建模方法,避开繁琐的数学推导,直接构建三相逆变器、电机本体参数化模型、霍尔传感器与换相逻辑实现,以及速度闭环控制设计。文章还提供了PID控制器整定、抗饱和处理和系统调试的实用技巧,帮助工程师快速掌握BLDC控制系统的仿真与实现。

weixin_27741699的博客 254

如何压测?【压测工具:提升系统性能的利器】,查看TPS,计算TPS,计算压测指标、压测名词解释

本文介绍压测是什么,解释压测的专属名词,教大家如何压测。介绍市面上的常见压测工具(ab、locust、LoadRunner、Jmeter、go实现的压测工具、云压测),对比这些压测工具,教大家如何选择一款适合自己的压测工具。本文通过介绍什么是压测,在什么情况下需要压测,通过单台机器100W长连接的压测实战了解Linux内核的参数的调优。如果觉得现有的压测工具不适用,可以自己实现或者是改造成属于自己的自己的工具。

weixin_71957062的博客 6349

【STM32Cube HAL】输入捕获(六)——脉宽测量

1

HAHAHA 4906

Win10系统内存占用异常飙升?三步排查法快速定位问题根源

本文针对Win10系统内存占用异常飙升问题,提供了一套三步排查法。首先利用任务管理器和资源监视器进行深度系统体检,定位隐形内存消耗者;其次通过干净启动和禁用非必要后台服务,揪出导致内存泄漏的第三方软件或驱动;最后进行终极深度清理,包括检查内存完整性、调整虚拟内存设置以及更新关键驱动程序,帮助用户快速恢复系统流畅运行。

weixin_29251567的博客 194

阿里大佬手把手教你压测

身为后端程序员怎么也要会一点压力测试相关的技术吧, 不然无脑上线项目万一项目火了进来大量请求时出现程序执行缓慢, 宕机等情况你肯定稳稳背锅, 而且这个时候短时间内还没办法解决, 只能使用物理扩容CPU, 内存, 更换网络等几种方式来解决问题, 妥妥的为公司增加支出好吧, 下一个被开的就是你

软件测试技术资源分享官 967

Vivado工程备份实战:两种方法快速迁移Block Design(附路径避坑指南)

本文详细介绍了Vivado工程中Block Design(BD)备份与迁移的两种核心方法:文件夹直接复制法与TCL脚本生成法。针对FPGA工程师在项目迁移或团队协作时常见的IP丢失、路径报错等问题,提供了从原理到实战的操作指南与路径避坑策略,确保设计可复现与高效协作。

pz890123的博客 1301

手把手教你Jmeter如何压测数据库

不断的给数据库施加压力,验证数据库处理的性能 那么我们要怎么才能在jmeter中对数据库进行呢?我们可以在jmeter中添加一个叫jdbc的组件来进行连接操作数据库。电脑安装下载jmeter并解压OK下载mysql的驱动并把mysql的jar包(mysql-connector-java-8.0.30.jar)复制粘贴到jmeter的D:\apache- jmeter-5.4.3\lib中的lib路径下。

kk_lzvvkpj的博客 1127

MQTT阿里云OTA 调试记录

2.验证,这个验证是什么意思呢,就是阿里云会把你包的信息,比如包大小,streamid(相当于包的识别码),版本号发送给你的设备,然后如果你没发送升级成功的包给阿里云,这里会是一直验证中的状态,那你的设备每次重新连接阿里云,发送connect包给阿里云的时候,阿里云就会发送一次这个验证(upgrade)包。提取到了之后就可以发送请求包了,这个请求包比较坑,也可能是我没付费,他的包一次最多只有1024个字节的数据。之前说了,验证状态下,设备发送connect包给阿里云,阿里云就会发一个upgrade包给你。

qq_42585211的博客 1231

Dify框架面试内容整理-如何进行Dify的二次开发?

无论是轻量修改界面,还是深度集成自定义模型、Agent、知识库,你都可以很方便地进行二次开发。,你可以基于它的开源架构对功能进行扩展、集成第三方服务、修改界面风格,甚至定制新的AI工作流程。前端:Node.js >= 16,React + TypeScript + Tailwind。接入自己的模型API(如:调用LLaMA、Baichuan、ChatGLM)。修改路径:/api/app/services/providers/可接入你自己的向量数据库(Qdrant、Milvus、FAISS)

不务正业的猿 1999

【后台测试】手把手教你jmeter压测

◆版权声明:本文出自胖喵~的博客,转载必须注明出处。  转载请注明出处:http://www.cnblogs.com/by-dream/p/5611555.html   我知道我迟早是要踏上了后台测试之路的,只是没想到来的这么突然。新接手了一个项目,在第一版发出后,产品需要做运营活动拉量,因为我担心突然的流量涌入是否会对后台造成压力呢?因此决定做一下压测:   下面就一步一...

WGH100817的博客 151

Plant Simulation与ABB机器人虚实结合

Plant Simulation与ABB机器人虚实结合

santayana的专栏 1869

从0到1手把手教你Jmeter分布式压测

注意默认端口都为1099。Jmeter 支持分布式压测,将需要模拟的大量并发用户数分发到多台压力机,使 Jmeter 拥有更大的负载量,满足真实业务场景(高并发场景)。6、如果并发较高,建议将Contorller机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉Contorller机的IP;应用,对 CPU 和内存的消耗较大,在需要模拟大量并发用户数时,单机很容易出现 JAVA 内存溢出的错误,导致。5、分布式测试中,通过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;

OKCRW的博客 705

与OpenClaw同类性质的AI智能体框架/工具汇总(小白友好)

OpenClaw的核心定位是「开源、本地优先、可执行真实任务的AI代理」,核心价值是让AI从“聊天”落地到“动手干活”(操控电脑/服务器、处理办公/系统任务)。结合这一核心,以下是同类性质的工具/框架,按「小白易上手程度」排序,每个产品重点说明和OpenClaw的异同、核心优势及适配场景,方便小白快速区分选择。

hy行者勇哥的博客 2105

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

1500字手把手教你Jmeter如何压测数据库

不断的给数据库施加压力,验证数据库处理的性能 那么我们要怎么才能在jmeter中对数据库进行呢?我们可以在jmeter中添加一个叫jdbc的组件来进行连接操作数据库。电脑安装下载jmeter并解压OK下载mysql的驱动并把mysql的jar包(mysql-connector-java-8.0.30.jar)复制粘贴到jmeter的D:\apache- jmeter-5.4.3\lib中的lib路径下。

OKCRW的博客 696

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

手把手教你jmeter压测

我知道我迟早是要踏上了后台测试之路的,只是没想到来的这么突然。新接手了一个项目,在第一版发出后,产品需要做运营活动拉量,因为我担心突然的流量涌入是否会对后台造成压力呢?因此决定做一下压测:  下面就一步一步的介绍我从0到1的压测过程吧。  我下载的是 apache-jmeter-2.13,因为这个包下载下来通用linux和windows的,所以我们现在windows下打开它。    直接点击bat...

weixin_42270917的博客 386

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

linux流量压测工具,手把手教你快速部署流量压测工具 – Bees with Machine Guns

(可用于测试AWS ELB、EC2、Auto Scaling、HA) 一群勤劳的小蜜蜂很多时候我们需要进行负载均衡、Web服务器的并发式压力测试,但像Siege, JMeter等工具都是从一个源IP地址发送流量,这不能很好的模拟出对负载均衡的实际压测效果。这里将详细介绍如何快速部署一个分布式压测工具Bees with Machine Guns,模拟一组不同的IP(可自定义)地址进行压测,这可更加准...

weixin_39715907的博客 383
上一篇: 这800道软件测试面试真题,可以帮你搞定95%以上的面试!
下一篇: 23年下半场,软件测试涨薪核心技能究竟是什么?
字节自动化测试
博客等级 码龄6年 7034粉丝 1810原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值