手把手教你 - 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的有,这里需要注意一下。

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv9改进策略:注意力机制 | 动态稀疏注意力的双层路由方法BiLevelRoutingAttention | CVPR2023

💡💡💡本文改进内容: CVPR2023 动态稀疏注意力的双层路由方法BiLevelRoutingAttention,强烈推荐,涨点很不错,同时被各个领域的魔改次数甚多,侧面验证了性能。 💡&#x1…

html2canvas 请求阿里云oss图片跨域问题解决

1. html2canvas设置 useCORS:true html2canvas(this.$refs.qrcode, {useCORS:true,}).then(canvas > {// 转成图片,生成图片地址let oImg new Image()oImg canvas.toDataURL(image/png) // 导出图片var oA document.createElement("a")oA.download…

大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望—打造AI应用新篇章

0.前言大模型发展史 早期阶段(1950s~1980s) 在1950年代初期,人们开始尝试使用计算机处理自然语言文本。然而,由于当时的计算机处理能力非常有限,很难处理自然语言中的复杂语法和语义。随着技术的发展,自然…

Codeup_1132:问题 A: 最长公共子序列

目录 Problem DescriptionInputOutputSample InputSample Output原题链接解题思路代码实现(C) Problem Description 给你一个序列X和另一个序列Z,当Z中的所有元素都在X中存在,并且在X中的下标顺序是严格递增的,那么就…

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

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

Linux 系统Centos7.0记录安装Docker和安装jdk环境完整教程(建议收藏备用)

Linux 系统Centos7.0记录安装Docker和安装jdk环境完整教程(建议收藏备用) 一、安装前准备工作 1.1 查看服务器系统版本以及内核版本 cat /etc/redhat-release1.2 查看服务器内核版本 uname -r这里我们使用的是CentOS 7.9 系统,内核版本为…

短信系统开发注意事项|网页版短信后台

在开发短信系统时,有一些重要的注意事项需要考虑,以确保系统的稳定性、安全性和功能完整性。以下是一些开发短信系统时需要注意的事项: 合规性和法律要求:确保短信系统的开发符合当地法律法规和通信行业规定,包括用户隐…

【STM32嵌入式系统设计与开发】——12IWDG(独立看门狗应用)

这里写目录标题 一、任务描述二、任务实施1、ActiveBeep工程文件夹创建2、函数编辑(1)主函数编辑(2)USART1初始化函数(usart1_init())(3)USART数据发送函数( USART1_Send_Data(&…

【漏洞复现】WordPress Automatic Plugin 任意文件下载漏洞(CVE-2024-27954)

0x01 产品简介 WordPress Automatic Plugin是一款功能强大的WordPress插件,旨在帮助用户自动采集并发布内容。这款插件支持从各种来源自动采集内容,包括但不限于RSS源、网站、YouTube、eBay等。用户可以根据自己的需求设置采集规则,选择要采…

大数据Hadoop入门04 ——【HDFS shell操作】

一、HDSF shell命令行解释说明 1、介绍 命令行界面(英语: command-line interface,缩写: CLl),是指用户通过键盘输入指令,计算机接收到指令后,予以执行一种人际交互方式。Hadoop提供了文件系统的shell命令行客户端:…

【收集】好玩的技术

文章目录 IP-Adapter-FaceID IP-Adapter-FaceID https://huggingface.co/h94/IP-Adapter-FaceID

http模块—http请求练习

题目要求:搭建如下http服务: 1.当浏览器向我们的服务器发送请求时,当请求类型是get请求,请求的url路径地址是/login。响应体结果是登录页面 2.当浏览器向我们的服务器发送请求时,当请求类型是get请求,请求…

【物联网开源平台】tingsboard安装与编译

别看这篇了,这篇就当我的一个记录,我有空我再写过一篇,编译的时候出现了一个错误,然后我针对那一个错误执行了一个命令,出现了绿色的succes,我就以为整个tingsboard项目编译成功了,后面发现的时候&#xff…

CentOS 7 下安装RabbitMQ教程

CentOS 7 下安装RabbitMQ教程 一、做准备(VMWare 虚拟机上的 CentOS 7 镜像 上安装的) (1)准备RabbitMQ的安装包(rabbitmq-server-3.8.5-1.el7.noarch)下载地址mq (2)还得准备erl…

若以适配国产数据库达梦和人大金仓

首先是nacos 部署完成,若以工程启动正常的情况下。 1.在若以工程中添加新的模块。这个不过多介绍网上例子很多。 2.工程建成后需要需要适配的mysql 数据库中的表。 新将项目Nacos 中添加人大金仓数据 因为本身我这个连接的比较多 第一个数据库是mysql 5.7 第二…

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

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

初学者怎么学习Python?Python学习从什么开始?

学习Python,可以先从Python爬虫开始哈 首选,爬虫并不是网上传言的那样,动不动就面向铁窗编程等,正规的爬虫还是相当有市场的!!! 而 Python 作为入门简易的语言,语法也相当简洁&…

《无名之辈》天涯镖局攻略:高效拉镖窍门!

《无名之辈》天涯镖局开启要注意什么,在这里,每一次运镖都是一次刺激的冒险,而掌握合适的策略将让你事半功倍。以下是天涯镖局的开启攻略,助你在危机四伏的路途上赢得胜利。 ① 拉取适当级别的包子和加速卡 在天涯镖局中&#xf…

【LVGL-消息框部件(lv_msgbox)】

LVGL-消息框部件(lv_msgbox) ■ LVGL-消息框部件(lv_msgbox)■ 示例一:隐藏,弹窗消息框■ 示例二:■ 综合示例: ■ LVGL-消息框部件(lv_msgbox) ■ 示例一&am…

万兆车载以太网转换器 10G/2.5G多速车载以太网转换器-MC10GM

MC10GM转换器 一、产品简要分析 2.5G,5G,10G可切换万兆/多速车载以太网转换器。采用罗森博格H-MTD标准接口类型。实现将车载以太网标准2.5/5/10G BASE-T1转换为工业级2.5/5/10G 标准以太网,进而接入电脑或工控机. 产品实现2.5/5/10G Base-T1 和2.5/5/10G Base-R之间…