性能调优|Jmeter工具使用简记

前言

       Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。 JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。from [百度](https://baike.baidu.com/item/Jmeter/3104456?fr=aladdin)

使用场景

       常规的性能测试中,常用的性能测试工具中,Jmeter绝对是必选好用的利器之一,使用Jmeter可以快速模拟大并发,多线程场景,从而可以快速知道接口的吞吐量,性能瓶颈接口

安装

        window环境

       下载链接:https://archive.apache.org/dist/jmeter/binaries/ 查找对应版本(window x64),本文以5.4.3版本为例,我们只需要关注安装路径下的/bin目录的jmeter.properties、system.properties文件

安装文件

        jmeter.properties

  • 修改为中文显示
language=zh_CN
  • 修改远程连接主机
remote_hosts=123.12.33.205:1099,123.12.33.206:1099 #分布式远程环境下使用该配置,多台主机用逗号分开,若是本地压测,忽略此配置
  • 剔除ssl配置
server.rmi.ssl.disable=true

        system.properties

  • Jmeter回调地址
java.rmi.server.hostname=123.12.34.54 
# 分布式环境下需要注意,本地测试可以忽略 若jmeter部署在远端服务器,
# 需要修改此项配置,该ip来源于本地电脑ip(若是内网,请填写内网ip),部署远端服务器的Jmeter在本地控制,则远端的Jmeter会回调本地控制的ip

本地压测

        场景一:纯本地压测,无部署服务到远端(此处远端指本地以外的其他机器)

        右键以管理员身份启动jmeter-server.bat批处理脚本,等待启动

        启动过程

[外链图片转存中...(img-blog.csdnimg.cn/5ebe0d9df6664d98a3f1dc07ff4a9cfa.png)

在这里插入图片描述

        页面简单描述

在这里插入图片描述

        >常见添加项(菜单栏-》文件-》新建测试计划-》右键添加):

  • 线程组

        如下图,着重介绍下线程属性:指定线程数50 每个线程执行1s,循环次数可选永远,调度器:设置50线程持续跑600秒

在这里插入图片描述

  • csv数据文件设置

        如下图,设置路径,与变量名(具体用法后面继续介绍),文件类型可以是TXT也可以是CSV(不要被CSV数据文件设置迷惑),或者XML

示例1:
在这里插入图片描述

分隔符(用“\t”代替制表符):标识一行内的分割,举例截图order_id_xcode_spucode.txt的数据格式应该是
订单号1,xcode1,spu1
订单号2,xcode2,spu2
订单号3,xcode3,spu3

变量名称(西文逗号间隔):在此处定义变量名称,后续请求体模版中使用,例如上述截图定义了三个变量order_id、x_code、spu_code,那么请求体模版可以写成

{
  "goods_list": [
    {
      "num_id": "${x_code}",
      "item_id": "${spu_code}"
    }
  ],
  "order_id": "${order_id}"
}

示例2:
在这里插入图片描述

分隔符(用“\t”代替制表符):标识一行内的分割,举例截图xx.txt的数据格式应该是
订单号1
订单号2
订单号3

变量名称(西文逗号间隔):在此处定义变量名称,后续请求体模版中使用,例如上述截图定义了三个变量order_id,那么请求体路径可以写成
/xxxx/${order_id}/xxx

  • Http请求头

        如下图,Http请求头设置,一般与那个Http监听器同一层级,就是设置该Http,若都是同一层级,则默认设置所有请求头,如图中此请求头,设置了《开始发货(预售)》和《HOLD单中点击开始发货》两项Http请求头

在这里插入图片描述

  • Http请求

        如下图,设置基本的请求参数,注意此处变量与CSV文件相对应

在这里插入图片描述

  • 设置响应断言

        如下图,设置200为请求成功的标志

在这里插入图片描述

  • 设置监听器

        如下图,设置聚合报告等各种报告监听器,重点查看接口指标吞吐量

在这里插入图片描述

  • 本地启动

        如下图,本地启动Jmeter对目标接口压测

在这里插入图片描述

        场景二:远程压测,本地gui页面控制,已部署服务到远端

        有时候,我们往往需要多台压测机器同时对某个接口施压,以达到最大压测效果,为此需要部署分布式的压测环境,然后通过本地的页面gui对分布式压测环境进行控制(启停),页面直接连接所有分布式压测机器

在这里插入图片描述

        分布式压测原理简图

在这里插入图片描述

其他使用场景

1.服务器上打包jmeter报告成html格式

-- 后台运行dzx-test.jmx脚本 并把结果生成到这个路径文件/root/dzx/result.jtl,并存储到/root/dzx/result文件夹下 并把日志输出到running.log日志上
nohup jmeter -n -t dzx-test.jmx -l /root/dzx/result.jtl -e -o /root/dzx/result > running.log 2>&1 &

-- 输出报告到html路径下
jmeter -g /root/dzx/result -o html/

-- 打包成html.tar压缩
tar -cvf html.tar result
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值