接口压力测试 jmeter--增强篇(二)

前期准备

1. JMeter的插件的安装

下载Jmeter Plugins Manager对插件进行管理
(1)下载地址:https://jmeter-plugins.org/install/Install/
(2)下载后,将jar包放到jmeter包目录下/lib/ext目录下
(3)重启Jmeter,点击【选项】,就能看到插件管理器了

直接插件下载

JMeterPlugins-Standard.jar和JMeterPlugins-Extras.jar,存放到/apache-jmeter-5.6.2/lib/ext lib/ext文件夹下。

下载链接: https://pan.baidu.com/s/15WnkPl2m9mefzgIO12_INA?pwd=4dkc 提取码: 4dkc

2.ServerAgent安装 

ServerAgent下载

链接: https://pan.baidu.com/s/1HbBC394I83pLRt_bakPc8g?pwd=n1y5 提取码: n1y5

将ServerAgent-2.2.0上传到被测服务器(根目录或任意位置),解压,进入目录,Windows环境,双击startAgent.bat启动;mac、linux环境执行startAgent.sh启动,默认使用4444端口(如果没有执行权限,可先赋予执行权限:chmod 777 startAgent.sh)

注:ServerAgent服务端口号默认为4444,如若遇到端口被占用,则需关闭占用该端口的进程,或者改变ServerAgent服务的默认端口:

A:关闭占用4444端口的进程,再次启动ServerAgent服务,成功。

查看接口占用情况

lsof -i:4444 //查看4444端口被占用情况

关闭被占用的接口

kill -9 2103 //kill -9 PID

B:使用命令改变ServerAgent服务的默认端口:./startAgent.sh -udp-port 0 -tcp-port xxxx (xxxx为新端口号)

./startAgent.sh -udp-port 0 -tcp-port xxxx
  • startAgent启动

将ServerAgent 文件夹下的startAgent.sh拖到终端中,然后回车

3.修改jmeter参数

修改配置文件jmeter.properties、jmeter.bat

路径:/Users/mac/Documents/apache-jmeter-5.6.2/bin

3.1 jmeter.properties修改输出格式、保留响应数据等

jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true

3.2 修改jmeter内存jmeter.bat 

重启Jmeter 

一、JMeter监控使用

添加--监听器

1. TPS 和 RT(响应时间)

TPS(Transactions per Second)和RT(Response Times Over Time)直接增加就可以

运行效果:

2. (ServerAgent)监控服务器的性能:CPU,内存 

使用PerfMon Metrics Collector

PerfMon Metrics Collector使用原理:

1.需要在服务器安装一个ServerAgent,用于收集服务器的性能参数。

然后通过4444端口输出。

2.在PerfMon Metrics Collector组件中通过4444端口去捕获服务器性能参数。

  • 2.2.1 PerfMon Metrics Collector设置

  • 2.2.3运行脚本

如果有报错,那可能安装插件版本冲突的问题。 

本人是 lib/ext下有两个版本的jmeter-plugins-manager.jar,删除了一个后正常

监控图的作用主要是:

1.看趋势,找性能拐点

2.写性能测试报告

二、实际性能压测的场景设置 

场景:性能测试用例

1.旧系统来自于运维

2.新系统来自于合理预估

按场景和规则预估:做OA,总用户10000个,测试打卡功能做并发,8:30-9:00

一般大部分的公司不超过 200,或者多一点很难超过500。

至于5000以上,1万,十万,百万级别的一定要集群。

服务器(集群)和压力机(集群)

1.单接口基准测试

使用一个用户测试接口5分钟。

目的:为了在没有任何压力的情况下:查看各项性能指标。

单接口基准测试,一般响应时间不超过100ms

2.单接口负载测试场景

通过逐渐的对一个接口进行施压直到出现性能拐点。 获得被测接口的最大处理能力以及它的相关的性能指标。

单接口负载测试,一般不做,只有在怀疑某个接口有问题时,才去监测

3.混合负载压测场景

(不是只有一个场景,有多个)

目的是为了验证整个业务的最大的最优的性能体现。重点在于模型的设计。模型来自于数据(来自生产环境的日志或者产品经理给出的)。

Stepping Tread Group: 递增式线程组,共建式线程组

Ultimate Tread Group:Ultimate 一般用来做极限测试,浪涌测试

 压测策略/压测场景/压测用例:

3.1 Stepping Tread Group 逐步加压

 之前的脚本复制到Stepping Tread Group


 this group will start(启动多少个线程):100

First wait for(等待多少秒才开始压测) :一般为0

Then start (一开始有多少个线程数):一般为0


比较重要:下面 3 个一般一起用 )

Next , add :10

threads every :30

using ramp-up :5

每5秒启动10个虚拟用户数,每组数据持续运行30秒


  (也是重要的参数) 

Then hold load for :60

全部加载完成后,负载运行60秒。 

(在企业中,负载测试 10~30 分钟,压力测试 4~24 小时--------4/8/12/24 小时比较常用)


(下面两个一起用)

Finally stop:5

threads every : 1

每一秒停止5个虚拟用户数。

3.2 集合点设置(并发)

3.3 运行结果

 

超过时间集合释放了

 

4. 压力测试场景:

验证系统的极限。直到有任何一个性能指标超出预期。

5. 稳定性测试场景。

在压力测试的场景下持续的运行4-24个小时。 

 三、无界面压测(NON GUI )

1.节约系统资源。

2.更快捷,只需要启动命令即可进行压测

3.主要是用于性能压测集成。

-n 表示无界面压测

-t 制定你的jmx脚本

-l 生成jtl测试报告

上面的测试时间较长,修改如下,可以比较快的看到结果:

 1. 压测

终端进入脚本.jmx所在位置,输入以下指令:

jmeter -n -t jmeter2024.jmx -l result001.jtl

 运行结果:

2.生成报告

注意:再次修改jmeter.properties输出格式

jmeter.save.saveservice.output_format=csv

参数: 

-e -0 直接生成报告

重新启动DOS窗口,进入路径,输入指令:

jmeter -n -t jmeter2024.jmx -l result001.jtl -e -o reports

 

jtl报告通过 jmeter的聚合报告导入查看

直接查看报告

3.集群压测

注意点:JMeter版本和插件的版本要一致

两个参数:用于分布式集群压测

-r:表示启动所有的远程压力机执行压测。

-R:指定特定的远程压力机执行压测。多态用,隔开

运行--远程启动:可以看到远程的服务器 

命令:

jmeter -n -t jmeter2024.jmx -l result.jtl -e -o reports -r
jmeter -n -t jmeter2024.jmx -l result.jtl -e -o reports -R 192.168.0.24:1001

4. 查看Linux服务器的性能

市面上 90% 的服务器是Linux服务器 

通过Linux 的 IP地址,账号,密码进行连接

mac连接Linux服务器 

windows连接Linux服务器 

(1)windows先连接Linux服务器

下载并安装一些常用的SSH客户端软件,例如PuTTY或Xshell

(2) 输入指令top:

效果

load average: 平均负载(1分钟,5 分钟,15 分钟)值不能超过 4,要不然就是超负荷运行

Tasks: 进程数

%Cpu(s): id :剩余百分比

KiB Mem: free:剩余内存(free/1024/1024= ? G)5221312/1024/1024= 4.97G

KiB Swap: used :稳定为 0 是最好

(3)指令htop:

四、搭建JMeter+Grafana+Influxdb实时监控

(mac)性能监控平台搭建JMeter+Grafana+Influxdb

优点:

1.实时

2.美观

3.能够存储和对比

原理:

1.运行jmeter时会吧数据写入到influxdb

2.influxdb实时存储执行的结果

3.grafana链接.influxdb,将他的数据展示为图表

  jmeter中,添加“监听器 -> 后端监听器”

通过后端监听器,将聚合报告的值通过 influxdb采集,在grafana中显示出来  

 监控效果:

五、CPU\内存等性能监控可视化 

(mac)Prometheus监控之Node_exporter(CPU、内存、磁盘、网络等)-CSDN博客 

效果:

 

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

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

相关文章

CUDA编程---线程束洗牌指令

从Kepler系列的GPU(计算能力为3.0或更高)开始,洗牌指令(shuffle instruction)作为一种机制被加入其中,只要两个线程在相同的线程束中,那么就允许这两个线程直接读取另一个线程的寄存器。 洗牌指…

清华大学:序列推荐模型稳定性飙升,STDP框架惊艳登场

获取本文论文原文PDF,请公众号留言:论文解读 引言:在线平台推荐系统的挑战与机遇 在线平台已成为我们日常生活中不可或缺的一部分,它们提供了丰富多样的商品和服务。然而,如何为用户推荐感兴趣的项目仍然是一个挑战。…

【笔记】Telephony SIM SPN及运营商名称显示数据来源介绍

来源介绍 网络名称显示 来源及优先级(高到低) SourceCommentEnhanced Operator Name String(Eons) 名称信息存放: EF_PNN(PLMN Network Name, fid: 6FC5) :LAC和EF_PNN中的Record Identifier EF_OPL(Operator PLMN List, fid: 6FC…

67条tips实战案例渗透测试大佬的技巧总结

67条tips实战案例渗透测试大佬的技巧总结。 Tips 1. 手动端口探测 nmap的-sV可以探测出服务版本,但有些情况下必须手动探测去验证 使用Wireshark获取响应包未免大材小用,可通过nc简单判断 eg. 对于8001端口,nc连接上去,随便输…

GlobalFilter全局过滤器

这个跟跟刚才那个GatewatFilert默认全局配置的效果是一样的,但是那个是配置,只能使用已有的进行配置,GlobalFilter全局过滤器是通过类实现的 可以自己用代码实现拦截后要处理的逻辑。 定义方式: 先实现GlobalFilter接口&#xf…

深入C语言,发现多样的数据之枚举和联合体

一、枚举 枚举 是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。是一个被命名的整型常数的集合。简单来说就将某种特定类型的对象一一进行列举,一一列举特定类型可能的取值。…

探索RadSystems:低代码开发的新选择(二)

系列文章目录 探索RadSystems:低代码开发的新选择(一)🚪 文章目录 系列文章目录前言一、RadSystems Studio是什么?二、用户认证三、系统角色许可四、用户记录管理五、时间戳记录总结 前言 在数字化时代,低…

【做一名健康的CSDNer】程序员哪几种行为最伤肾(程序员必看)

虽然没有专门针对程序员这一职业群体特有的伤肾行为的研究报道,但根据一般人群的健康风险和生活习惯,程序员由于其特殊的工作模式和环境,可能更容易出现如下伤肾的行为: 熬夜加班: 程序员由于项目进度、bug修复等原因&…

函数的创建和调用及删除

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 函数和存储过程非常类似,也是可以存储在 Oracle 数据库中的 PL/SQL代码块,但是有返回值。 可以把经常使用的功能定义为一个函数,就像系统…

数仓建模—逻辑数据模型

数仓建模—逻辑数据模型 数据模型是数据元素及其基于现实世界对象之间的关系的可视化表示。数据模型揭示并定义数据在业务流程中的连接方式,并支持创建高效的信息系统或应用程序。例如,在商业智能中,数据模型定义用户可以在其分析中使用哪种数据。 逻辑数据模型 (LDM Logi…

【C++ STL序列容器】array 数组

文章目录 【 1. 基本原理 】【 2. array 的创建 】2.1 不赋初值2.2 赋默认值2.3 赋指定值 【 3. array 的成员函数 】实例 【 1. 基本原理 】 array 是在 C 普通数组的基础上添加了一些成员函数和全局函数。在使用上,它 比普通数组更 安全,且效率并没…

以太网帧格式解析

以太网的正式标准是IEEE802.3,它规定了以太网传输的帧结构。 以太网帧格式如下图所示: 以太网传输数据时,是按照上图的格式,自左到右依次传输的。需要注意的是前导码和SFD不属于以太网协议的内容,应该是属于物理层数据…

学习ArkTS -- 状态管理

装饰器 State 在声明式UI中,是以状态驱动试图更新: 状态(State):指驱动视图更新的数据(被装饰器标记的变量) 视图(View):基于UI描述渲染得到用户界面 说明…

病理验证mIF和TMA路线(自学)

目录 技术 使用配对病理切片 mIF验证 单基因使用TMA验证 技术 多重荧光免疫组化技术 (Multiplex immunohistochemical,mIHC) 也称作酪氨酸信号放大 (Tyramide dignal amplification,TSA) 技术,是一类利用辣根过氧化酶 (Horseradish Pero…

weblogic反序列化漏洞(CVE-2017-10271)复现

直接用vuluhub搭建现成的靶场做 访问靶场 打开是这样表示成功 想反弹shell 就先开启kali1的nc监听,这就监听2233端口吧 linux:nc -l -p 2233 抓包修改为攻击数据包 ip和端口可以任意修改 反弹的shell 还可以写入文件shell 只需要把提供的poc POS…

修复Windows搜索不工作的几种方法,总有一种适合你

序言 Windows搜索是Windows 10中一个非常有用的功能,它允许你搜索特定的程序、应用程序、文档、图片、文件、设置等,以便快速访问它们。但有时Windows搜索找不到我们预期的结果,甚至没有响应,这会给Windows用户带来很多不便。如果Windows 10中的搜索栏不工作,该怎么办?你…

【MySQL】SQL优化

SQL优化 插入数据 insert 一次插入数据和批量插入数据 insert into tb_test (id, name) values (1,Tom); insert into tb_test (id, name) values (1,Tom),(2,Jack),(3,Jerry);优化方案: 手动控制事务,且按主键顺序插入。start transaction; insert …

机器人实验室LAAS-CNRS介绍

一、LAAS-CNRS介绍 1、缩写介绍 同样的,给出英文缩写的全称,以便理解。这里的LAAS(Laboratory for Analysis and Architecture of Systems)指法国的系统分析与架构实验室,CNRS(Centre National de la Rec…

OpenHarmony实战开发-提升应用响应速度。

应用对用户的输入需要快速反馈,以提升交互体验,因此本文提供了以下方法来提升应用响应速度。 避免主线程被非UI任务阻塞减少组件刷新的数量 避免主线程被非UI任务阻塞 在应用响应用户输入期间,应用主线程应尽可能只执行UI任务(…

【电控笔记6.3】采样-Z转换-零阶保持器

本质 数字转模拟:零阶保持器 采样 z-1所描述的物理意义即为延迟T时间的拉氏转换e-sT 信号采样延时