性能压测系列:java环境之Jmeter-http(cpu/内存/磁盘io/网络)

Jmeter-http 接口脚本的一般步骤:

  1. 新建线程组
    • 并发用户数,每秒创建数,循环次数,执行时长等
  2. 新建 http 请求
    • 构造get/post, 含 url、路径、请求方式和参数
    • 配置config项, 含 cookie,header,变量参数,自定义函数等
    • 配置断言,检测执行结果是否符合预期
    • 其它的一些条件控制等,可以按需配置
  3. 新建查看结果
    • table / tree / summary / aggregate 等 ,可导出结果数据,用于错误/性能分析

Jmeter下载:https://jmeter.apache.org/download_jmeter.cgi
使用此工具,我们可以按照压测指标需求, 有针对性的进行参数设置,执行和结果处理
支持Windows&Linux

  • 测试场景
    • 单一接口
    • 依赖接口
  • 测试时长
    • 根据场景不同可选择: 分钟,小时,天等
  • 测试指标
    • 接口参数随机性,边界,固定,自增规则等
    • 并发数/tps/响应时长
    • 类型: cpu/内存/io/网络/是否考虑系统排他进程等

Windows环境,常用功能举例:

jmeter支持中英文语言切换:


image.png

新建线程组(Thread Group):

image.png

image.png

参数按需配置
需要留意:并发数, 每秒创建线程数, 循环次数, 启动延时

新建http请求(HTTP Request):

image.png

image.png

参数按需配置
需要留意: 针对一些限流/调用链路长的接口:name/参数,可阅读性要强,便于事后结果分析
应用服务ip & port,请求方式&参数,可以考虑边界值,现有配置的min/max 参数的溢出情况

新建cookie/header等config配置(Config Element):

image.png

image.png

image.png

新建断言配置(Assertions):

image.png

image.png

执行查看结果(Listener):

image.png

举例说明: table, tree, summary, aggregate结果:

点击执行后,可以按需进行排序等操作,看执行结果的关键属性值:

table类型的:


image.png

tree类型的:


image.png

summary类型的:
image.png

aggregate类型的:


image.png
  • 可以将状态为error的导出到文件(如csv),用于分析和排查优化
  • 可以在remote / local debug的过程中,复用请求数据,curl也可(配合使用其它分析工具/命令)
  • 报告压测的结果, 需要留意观察的属性如: Samples, Average, error, Throughput, Min, Max, Connect time, Response code
    error,tps需要留意观察评估确认,根据浮动变化调整执行参数

oops : 过程中若出现瓶颈问题,需要检查 cpu、网络等,确认是否服务器问题
另外需要考虑的问题点:数据库(sql,nosql)、应用服务(宕机)、中间件(tomact、Nginx)、网络(抖动/受限/dns/大数据包)和操作系统,单机/分布式调用链路,如(too many xxx, too open xxx, close xxx, wait xxx, not found xxx, load error xxx)等

Linux环境使用:

  • 前置条件,需要先安装jdk,版本可选8
  • 官网下载:https://mirror-hk.koddos.net/apache//jmeter/binaries/apache-jmeter-5.3.tgz并解压后,进入bin目录,执行即可:
    ./jmeter -n -t jmeter_http_shell.jmx -l jmeter_http_response.jtl
    结果文件可用于分析问题
    留意: .jmx 是脚本, jtl 是结果 , 文件支持使用文本编辑器打开
    image.png

你可能感兴趣的:(性能压测系列:java环境之Jmeter-http(cpu/内存/磁盘io/网络))