手把手教你 - JMeter压力测试

前言

压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。

关于JMeter

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

JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

Apache JMeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

前置工作

官网:Apache JMeter - Download Apache JMeter 链接地址摆好了, 大家点击进去官网下载。

当然, 如果你不想去官网下载, 我在下面也准备了一份安装包供你下载安装使用。基于版本 - JMeter5.6.3

官网下载界面:
在这里插入图片描述
我在这里准备了一份安装包, 他是 .tgz 格式的; 需要自行解压缩, 你可选择7-zip 或 WinRAR 等第三方软件进行解压缩; 这里我使用 Windows 命令行方式解压缩。

安装包下载链接(百度云盘): apache-jmeter-5.6.3.tgz
链接: https://pan.baidu.com/s/1lxhnBbaKHJmRggTjWPjb5Q?pwd=xy74 提取码: xy74

用Windows命令行解压缩即可。操作步骤如下:

  • (1)进入存放压缩包文件夹,搜索栏输入cmd 打开命令行(回车)
  • (2)然后录入tar -xvzf + 需要解压的文件所在的路径(回车)
  • (3)解压完成后在系统用户目录下可以找到解压的文件

在这里插入图片描述
在这里插入图片描述
进入bin目录,使用jmeter.bat启动程序。
在这里插入图片描述
注: jmeter需要jdk环境。对应的jdk版本不可太低,一般jmeter3.0的对应jdk1.7,jmeter4.0对应jdk1.8以上;环境变量相关配置此处不赘述了。

启动之后会有两个窗口,一个cmd窗口,一个JMeter的 GUI。

cmd窗口(没有安装java环境)
在这里插入图片描述

cmd窗口(已正确安装并配置Java环境)
在这里插入图片描述
JMeter的 GUI 窗口(注意看CMD窗口的提示信息)

================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================

翻译:不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI。

使用如下命令执行测试(这里你可暂且跳过, 下面会讲到具体使用):

 jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

启动后会看到JMeter界面
在这里插入图片描述
更改语言为中文: 官方为我们提供了简体中文。通过 【Options】->【Choose Language】变更为简体中文
在这里插入图片描述
当然, 如果你想在压测完成之后执行测试计划, 那么你还需要为JMeter配置环境变量; 这里我就不再阐述了, 同学们自己摸索配置哈! 其实不配置是不影响你使用Jmeter压测的。

创建测试

创建线程组

“测试计划”上右键 【添加】–>【Threads(Users)】–>【线程组】
在这里插入图片描述
设置线程数和循环次数。我这里设置线程数为500,循环一次。

重要的事情说三遍:
结合实际进行设定, 阶梯式压测, 一次压太多怕你机器冒烟
结合实际进行设定, 阶梯式压测, 一次压太多怕你机器冒烟
结合实际进行设定, 阶梯式压测, 一次压太多怕你机器冒烟

在这里插入图片描述

配置元件

在这里插入图片描述
配置需要进行测试的程序协议、地址和端口
在这里插入图片描述

注意:
当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可

构造HTTP请求

“线程组”右键 【添加-】->【samlper】–>【HTTP 请求】设置我们需要测试的API的请求路径和数据。我这里是用的json
在这里插入图片描述

添加HTTP请求头

  • 线程组上右键 【添加】–>【配置元件】–>【HTTP信息头管理器】

  • 因为我要传输的数据为json,所以设置一个 Content-Type:application/json, 你可根据实际设置
    在这里插入图片描述

添加断言

  • 线程组上右键 【添加】–>【断言】–>【响应断言】

  • 根据响应的数据来判断请求是否正常。我在这里只判断的响应代码是否为200。当然你还可以配置错误信息
    在这里插入图片描述

添加察看结果树

  • 创建的线程组上右键 【添加】–>【监听器】–>【察看结果树】

  • 直接添加,然后点击运行按钮就可以看到结果了
    在这里插入图片描述

添加Summary Report

  • 线程组上右键 【添加】–>【监听器】–>【Summary Report】

  • 直接添加,然后点击运行按钮就可以看到结果了
    在这里插入图片描述
    为了不引起不必要的争论,隐藏了TPS。此数据不具备任何价值,仅仅为文章演示。

记得点保存,这时候会生成一个pem的文件

执行测试计划

前面我们说过,执行测试计划不能用GUI,需要用命令行来执行

在这里插入图片描述

我这里执行的命令:

jmeter -n -t testplan/RedisLock.jmx -l testplan/result/result.txt -e -o testplan/webreport
  • testplan/RedisLock.jmx 为测试计划文件路径

  • testplan/result/result.txt 为测试结果文件路径

  • testplan/webreport 为web报告保存路径。

Web报告如下:
在这里插入图片描述
线程数量和循环次数将会影响最终的测试报告, 如果服务器资源有限,注意采用阶梯测试。我下载的5.6.3版本的jemeter没有阶梯测试的插件,选择5.4.1的有,这里需要注意一下。

总结

对于压测,需要采取的策略是阶梯压测,然后让他持续一段时间,看看所测试的服务是否平滑且正常运行。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云部署宝塔,设置了安全组还是打不开。

1.在安全组是开放正确的端口好。8888要开,但是不只是开放8888,举个例子,https://47.99.53.222:17677/49706cf7这个,要开放17677这个端口号。 2.安全组要挂载到实例上,从三个点的进入点击管理实例,加到对应的…

嵌入式开发——基础电路知识

1. 电路知识 1.1. 驱动能力 IC是数字逻辑芯片,其输出的是逻辑电平。逻辑电平0表示输出电压低于阈值电压,逻辑1表示输出电压高于阈值电压。负载则是被驱动的电路或元件,负载大小则指负载的电阻大小。 驱动能力主要表现在几个方面&#xff1…

07、JS实现:用回溯法实现数组全排列的算法(一步一步剖析,很详细)

回溯法实现数组全排列的算法 Ⅰ、回溯法实现数组全排列:1、题目描述:2、解题思路:3、实现代码: Ⅱ、小结: Ⅰ、回溯法实现数组全排列: 1、题目描述: 给定⼀个 没有重复 数字的序列,…

2024刚做抖店,对接主播/达人的全过程,专为新手准备的教程

内容来源于【醒醒团队-电商王路飞】 第一步:开通精选联盟 想找主播给你带货的话,精选联盟是必须要开通的,你们之间的合作、链接的上下架等等也需要通过精选联盟去完成。 这一点,我在之前分享的抖音小店基础搭建内容里&#xff…

如何使用CHAT-AI?

伴随着CHAT-GPT的出现,人们都喜欢上了CHAT-AI。嗯?你还不会用?! 教程来喽! 首先点这里的 … 点击扩展 接着选择“管理扩展” 点击之后搜索“wetab” 最后你需要注册一个号,然后就可以使用CHAT-AI啦&#x…

JavaScript混淆工具选择与使用指南

摘要 本文介绍了什么是js混淆工具,以及为什么需要使用js混淆工具。详细解释了js混淆工具的实现原理和作用,探讨了如何选择合适的js混淆工具,列举了几款常用的js混淆工具,并对它们的特点和适用场景进行了分析。最后总结了js混淆工…

2024年第16届大广赛新命题发布-爱华仕箱包

2024年3月27日,2024年第16届大广赛发布了新的命题,爱华仕箱包命题,自2017年起,爱华仕箱包已连续8年担任全国大学生广告艺术大赛命题单位。 爱华仕现已实现百货、超市、电商、礼品、投标、海外市场6大零售网络的全覆盖&#xff0c…

第十三届蓝桥杯省赛C++ A组 Java A组/研究生组《推导部分和》(C++)

【题目描述】 【输入格式】 【输出格式】 【数据范围】 【输入样例】 5 3 3 1 5 15 4 5 9 2 3 5 1 5 1 3 1 2 【输出样例】 15 6 UNKNOWN 【思路】 题解来源&#xff1a;AcWing 4651. $\Huge\color{gold}{推导部分和}$ - AcWing 【代码】 #include<bits/stdc.h> #define…

工业无线网关在汽车制造企业的应用效果和价值-天拓四方

随着智能制造的快速发展&#xff0c;工业无线网关作为关键通信设备&#xff0c;在提升生产效率、优化生产流程、实现设备间的互联互通等方面发挥着越来越重要的作用。以下是一个关于工业无线网关在智能制造行业应用的具体案例&#xff0c;展示了其在实际生产中的应用效果和价值…

jsp指令和动作

1.page指令&#xff1a;描述页面信息 pageENcoding:软件编码 contentType&#xff1a;浏览器编码 2.include指令&#xff1a;将多个网页合成一个网页&#xff0c;静态包含网页 问题&#xff1a;1.在网页源代码中&#xff0c;会形成错误的多遍代码&#xff0c;将主页面代码和…

2024游泳耳机哪个牌子好?分析测评四大热门游泳耳机

随着科技的不断发展&#xff0c;游泳耳机已经成为游泳爱好者们在水中畅游时的最佳伴侣。近年来游泳耳机市场涌现出了众多品牌和产品&#xff0c;让人眼花缭乱。为了帮助大家挑选到最适合自己的游泳耳机&#xff0c;我们特意对市面上四大热门游泳耳机进行了详细的分析测评&#…

labelme自动标注工具的安装和python代码修改

labelme嵌入SAM和EfficientSAM自动标注模型 目录: 1.labelme windows环境下安装python版本labelme 2.labelme.exe直接安装 3.labelme生成exe 4.labelme python代码修改 labelme自动标注使用方法 编辑/Create AI-Polygon 自动分割,直接生成分割图,标注为point,完成标注后…