压力测试-Jmeter

article/2025/9/24 6:27:45

我们在开发的过程中,如果遇到系统预估访问量会比较大的时候,或者我们再做底层基础服务的时候,往往需要对我们的服务性能做一些压力测试和稳定性测试,市面上有很多压测工具,今天我们主要讲解的是Jmeter压力测试工具,鉴于最近做的一次项目正儿八经的做了一次压测,加上以前零零碎碎的学习,本次我打算总结一下。

一、Jemter的安装

我所下载的Jmeter是5.4版本的,解压过后进入bin目录,双击jmeter.sh,如图表示软件启动成功.

二、如何构建一个接口的压测脚本

 接下来我们启动一个接口服务,新增压测脚本

1、新增线程组

 创建100个线程,指定在1s内生成这全部100个线程,循环跑10次,整个压测跑下来执行接口请求1000次。

2、构建http取样器

 

输入采样器的名称、协议、服务器域名或者IP、端口号、Method及Url信息。

3、监听器里添加查看结果树(比较耗服务器性能,不需要可以不加)和聚合报告

4、补充知识点:计数器

上面的请求,我们的参数是写死的,但是多数时候,我们需要构建不同的参数,这个时候,如果没有规则,我们可以使用计数器。

 

 新增一个计数器原件,引用名称studentId,从1开始到10000结束,步长为1.

使用方法:${studentId}

结果:

 

5、读取csv文件

有的时候,参数并不能像上面这样用一个计数器随便变量替代,而是必须是真实有效的数据,这个时候我们可以从数据库里先把数据拿出来,整理成csv格式,由Jmeter去读取.

三、报告详解

看下我们第一次的的压测结果,

本次的接口完全是通过mysql来提供数据的,没有做任何的缓存,性能是非常之差,我们详细解释下各个参数的意思.

样本:就是本次我们一共进行了多少次接口请求

平均值:就是接口的平均响应时间,单位是ms

中位数:就是接口响应时间的中位数,单位是ms

90%百分数:就是90%的接口响应时间不超过这个数值,单位是ms

95%百分数:就是95%的接口响应时间不超过这个数值,单位是ms

99%百分数:就是99%的接口响应时间不超过这个数值,单位是ms

最小值:接口的最小响应时间,单位是ms

最大值:接口的最大响应时间,单位是ms

异常:接口异常的百分比

吞吐量:单位时间(1s)的接口请求次数

接收:收到的千字节每秒的吞吐量测试

发送:发送的千字节每秒的吞吐量测试

接下来我们做三次性能优化

①:加缓存Redis

②:加缓存Redis且用protobuf序列化

③:加缓存EhCache

这样我们可以通过压测工具一步步测试我们程序优化的效果,最终达到我们要求的压测指标。 

四、如何在服务器上跑压力测试

上述我们是在windows的界面开发下进行的压力测试,一般在公司里,我们会搭建专门的施压服务器,用于进行压力测试。

首先把我们的服务部署到服务器上去:

在压测服务器上需要安装jdk,配置Jmeter环境,上传apache-jmeter-5.4.tgz到服务器解压

Jmeter命令参数解释:

 利用GUI工具编写测试计划,生成一个jmx文件(包括监控、聚合报告、tps、服务器资源监控等),上传到服务器。

执行JMeter文件:在Linux服务器中找到文件所在的目录,然后开始执行

jmeter -n -t /opt/test/获取学生信息.jmx -l result.jtl -e -o /opt/test/result

执行完毕后将jtl文件下载到本地,利用GUI工具可以查看压测结果。

Jmeter多机压测(分布式压测),在有些时候,我们的压测服务器单机产生的请求量不一定能够满足压测要求,这个时候我们需要开多台压测服务器协调。

分别在两台机器上安装jmeter软件,一台是控制机,一台是Agent节点

在Agent节点的jmeter.properties上修改 server.rmi.ssl.disable=true

启动Agent:jmeter-server -Djava.rmi.server.hostname=<Ip>

修改控制机配置jmeter.properties remote_hosts=121.36.136.241:1099

启动控制机: jmeter-server

执行压测脚本,多一个参数 -r 表示全部agent启动并参与测试

jmeter -n -t /opt/test/获取学生信息.jmx -r -l result.jtl -e -o /opt/test/result

在Agent节点上也会打印2行日志 

五、Jmeter安装插件拓展功能

Jmeter作为一个开源工具,相比一些商用工具(如LoadRunner),在功能上就稍显不足,好在Jmeter可以集成第三方插件来丰富功能。

插件下载地址:​​​​​​jmeter-plugins.org

下载plugins-manager.jar文件后,将其放入jmeter的安装目录的lib/ext目录下,重启jmeter

重启后,我们为压测脚本添加监听器可以用来监测接口响应时间和tps的变化情况:

 在做压测的时候,我们除了关心接口性能的指标数据外,还有一点非常重要,我们也要时刻关注服务器资源的消耗情况,试想一下,如果服务器费了九牛二虎之力跑出了我们需要的性能指标,但是服务器消耗过大,随时都有宕机的风险,这样的压测结果没有任何意义,但是我们怎么监测服务器性能呢?如下:

我们需要安装PerfMon插件

 

同时我们在服务器也需要开启一个Agent

总结:

压力测试只能帮我们发现程序中的性能问题,但是它并不能帮我们解决问题,我们程序员除了要掌握压测的能力外,更重要的是优化程序的能力,包括但不限于数据库连接池调优、引入缓存、序列化调优、JVM调优、容器调优等,同时我们还需要不断监控服务器的CPU、内存、磁盘等硬件情况,我们要达到的目的是服务器能够在维持硬件资源正常工作的状态下,让我们的接口性能达到最优。

本次用到的软件:

链接:https://pan.baidu.com/s/1YajIPjQgqrtBNEtAvs-58A 
提取码:xdjl


http://chatgpt.dhexx.cn/article/YtHd8CCZ.shtml

相关文章

软件jmeter压力测试实例,jmeter压力测试案例实战

1、 测试目标地址:http://www.cnblogs.com/ 2、 1秒内有100个用户同时访问,看性能如何 3、 步骤 线程组、http请求、查看结果树、聚合报告 添加http请求如下: 继续填入参数格式: 服务器或名称IP:www.cnblogs.com 端口号:80 Connect:1000 Response:1000 添加查看结…

Jmeter负载和压力测试

负载和压力的区别: 负载测试:在一定的工作负荷下,给系统造成du的负zhi荷及系统响应的时间。 压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。 TPS和QPS的区别: tps可以理解为是每秒对事务的处理的能力 qps是每秒对服务器的查询能力 性能测试w…

Jmeter 压力测试 - Http2.0工具支持-【教学篇】

Jmeter快速使用 特此郑重声明&#xff01;该文章是原创作品&#xff0c;小编编写实属不易 &#xff0c;帮忙点赞关注一下~转载小伙伴请注明出处&#xff01;谢谢 概述 Apache JMeter Apache组织开发的压力测试工具。目前通过HTTP和FTP服务器用于对软件做压力测试&#xff0c;它…

Http压力测试工具HttpTest4Net

HttpTest4Net是一款基于C#实现的和HTTP压力测试工具,通过工具可以简单地对HTTP服务进行一个压力测试.虽然VS.NET也集成了压力测试项目,但由于VS自身占用的资源导致了在配置不高的PC上难以做到高并发压力测试,再加上需要装VS这个样一个庞大的工具也是件很麻烦的事情.使用HttpTes…

JMeter之压力测试

一、什么是压力测试 软件测试中&#xff1a;压力测试&#xff08;Stress Test&#xff09;&#xff0c;也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷&#xff0c;长时间或超大负荷地运行测试软件&#xff0c;来测试被测系统的性能、…

Jmeter登录压力测试

1.配置海量用户账号数据登录测试 usernamepassword1K.csv 用户名& 密码MD5加密 2. 启动jmeter.bat&#xff0c;新增测试计划 3.配置CSV文件 4.配置信息头 5. 配置http请求默认值 6.配置http请求账号&密码 配置查看结果树&聚合报告

Jmeter压力测试步骤

1.选择语言 Jmeter默认英文&#xff0c;切换语言为中文 2.创建线程组 点击选中测试计划&#xff0c;右键点击添加线程组 点击线程组&#xff0c;这里可以设置名称&#xff0c;添加注释&#xff0c;设置线程数&#xff08;每次有多少线程同时开启)、线程响应时间&#xff08;…

Jmeter接口压力测试

一&#xff0e;创建测试用例 Jmeter主界面&#xff1a; 1.添加线程组 测试计划 &#xff08;右键->添加->Threads&#xff08;Users&#xff09;->线程组&#xff09;&#xff0c;修改线程组名称为“登录”&#xff0c;可添加多个线程组&#xff0c;设置线程数&…

jmeter进行http压力测试

jmeter进行http压力测试 下载地址 下载地址&#xff1a;http://jmeter.apache.org/download_jmeter.cgi JMeter基于Java开发&#xff0c;需要系统有安装JDK环境。解压后进入bin目录&#xff0c;点击jmeter.bat 1、添加线程组&#xff1a; 测试计划 -> 添加 -> Threads…

压力测试 - HTTP压测工具stress指南

2019.03.19重新修改&#xff08;之前的使用安装方式有误&#xff01;&#xff09; Stress安装指南 github地址&#xff1a;https://github.com/buaazp/stress 使用环境&#xff1a;macOS 或者 Linux &#xff08;Windows用户请安装虚拟机或者Linux服务&#xff0c;如git工具…

jmeter进行http压力测试(图文小教程)

下载地址&#xff1a;http://jmeter.apache.org/download_jmeter.cgi JMeter基于Java开发&#xff0c;需要系统有安装JDK环境。解压后进入bin目录&#xff0c;点击jmeter.bat​​​​​​​ 1、添加线程组&#xff1a; 测试计划 -> 添加 -> Threads(User) -> 线程组…

如何使用Jemeter对HTTP接口压测

我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应该根据当前…

siege安装测试

Siege是一个压力测试和评测工具&#xff0c;设计用于WEB开发这评估应用在压力下的承受能力&#xff1a;可以根据配置对一个WEB站点进行多用户的并发访问&#xff0c;记录每个用户所有请求过程的相应时间&#xff0c;并在一定数量的并发访问下重复进行。 1、Siege是一个多线程ht…

springboot 网页聊天室

基于springboot的网页聊天室&#xff0c;采用websocket通信协议&#xff0c;可以进行多人聊天&#xff0c;单人聊天&#xff0c;群发功能。 1&#xff1a;输入昵称登录 2&#xff1a;聊天界面 下载完成后使用maven下载资源包&#xff0c;运行后使用127.0.0.1/login登录可进行…

网页版多人聊天室系统

网页版多人聊天室系统 SockJSSpringSpringMVCMybatiesEasyUIMysqlTomcat7Jdk7 兼容IE8 源代码下载&#xff1a;https://download.csdn.net/download/u014644574/11420820

【IM-03】Web端匿名聊天

前沿 Web端主要是集成SocketIO&#xff0c;然后部署到服务器的一个过程&#xff0c;入门的一个渠道。 第一篇&#xff1a;即时通信解决方案 第二篇&#xff1a;推送解决方案 第三篇&#xff1a;Web端匿名聊天 第四篇&#xff1a;iOS集成单聊&群聊 1.Web端匿名聊天主要是功能…

java如何实现web页面聊天_Java和websocket实现网页聊天室

WebSocket protocol 是HTML5一种新的协议&#xff0c;它实现了浏览器与服务器全双工通信(full-duplex)。接下来将实现一个websocket的网页聊天室的demo&#xff0c;前端框架会使用amazeUI&#xff0c;后台使用Java&#xff0c;网页编辑器使用UMEditor。 涉及知识 网页前端(HTML…

vue + element-ui 聊天_vue网页版聊天Vue+ElementUI仿微信界面聊天实例

vue+vuex+vue-cli+vue-router+element-ui+swiper等技术开发仿微信pc端界面聊天应用,实现了发送消息+表情(动图gif)、图片/视频预览、右键长按菜单、红包/朋友圈、截图发送等功能。 技术栈 vue版本:Vue2.5.6状态管理:Vuex页面路由:Vue-routericonfont图标:阿里巴巴字体图标…

2023 人工智能在线聊天机器人网页HTML源码

测试了一下就是对接的外部接口&#xff0c;无加密有能力的可以二开。使用教程&#xff0c;上传主机&#xff0c;服务器后解压使用&#xff0c;当然了&#xff0c;电脑解压后点击index.html也能用。

网页进行QQ聊天简单应用

在网页上唤醒QQ聊天 ---- 网页上用到在线客服之类的解决方案 想在网页上做一个在线客服的功能&#xff0c;其实可以用腾讯提供的方法&#xff0c;只要打开链接就能进行QQ聊天 ◆腾讯提供的代码为&#xff1a;&#xff08;腾讯官方链接&#xff1a; http://is.qq.com/webprese…