文章目录

  • 前言
  • 一、Jmeter是什么?
  • 二、下载安装
    • 1.macbook pro 本地安装
      • 1.1采用homebrew安装
      • 1.2采用压缩包直接安装
    • 2.Linux 线上安装
      • 2.1采用压缩包直接安装
  • 三、创建测试计划实现并发压力测试
    • 1.创建线程组
    • 2.创建请求
      • 2.1创建请求头
      • 2.2创建View Results Tree
      • 2.3创建Summary Report
      • 2.4创建Aggregate Report
      • 2.5创建Graph Results
      • 2.6创建Constant Throughput Timer
      • 2.7创建JSON Assertion
    • 3.导出jmx文件
    • 4.线上运行
    • 5.线下分析
    • 四、QPS配置说明
      • 20QPS配置
      • 40QPS配置
      • 80QPS配置
  • 总结

前言

在接口开发完成后,需要对接口的性能做测试,QPS,吞吐量这些性能指标需要量化,经过技术调研,采用jmeter完成线下线上的压力测试。(接口的功能测试,推荐使用apifox)


一、Jmeter是什么?

Apache JMeter™应用程序是开源软件,一个 100% 纯 Java 应用程序,旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的,但后来扩展到其他测试功能。

二、下载安装

官方下载地址:https://jmeter.apache.org/download_jmeter.cgi

1.macbook pro 本地安装

1.1采用homebrew安装

  • 快速安装brew
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
  • 安装jmeter
(base) valley@wensMacBook-Pro ~ %  brew install jmeter
  • 查看安装版本
(base) valley@wensMacBook-Pro ~ % jmeter -v
WARNING: package sun.awt.X11 not in java.desktop_    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____/ \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \/ _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |/ ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.4.3Copyright (c) 1999-2021 The Apache Software Foundation
  • 启动jmeter
(base) valley@wensMacBook-Pro bin % jmeter
WARNING: package sun.awt.X11 not in java.desktop
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):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
================================================================================
  • 遇到问题

    • 当保存jmx等文件时报错如下

      Uncaught Exception java.lang.IllegalAccessError: class com.github.weisj.darklaf.ui.filechooser.DarkFilePaneUIBridge$DetailsTableModel (in unnamed module @0x341b80b2) cannot access
      class sun.awt.shell.ShellFolder (in module java.desktop) because module java.desktop does not export sun.awt.shell to unnamed module @0x341b80b2 in thread Thread[AWT-EventQueue-0,6,main]. See log file for details.
      
    • 解决办法
      打开JMeter->选项->外观->选择其他主题(darklaf相关主题存在问题,可以设置为Nimbus)

1.2采用压缩包直接安装

  • 下载地址:

    • https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz

2.Linux 线上安装

2.1采用压缩包直接安装

下载地址:https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz

三、创建测试计划实现并发压力测试

1.创建线程组

  • 配置当前采样错误后后续采样的行为

  • 配置线程属性

    • Number of Threads(users):并发用户数
    • Ramp-up period(seconds):决定多长时间启动所有线程,0代表同时并发.一般设置ramp-up=线程数启动,并上下调整到所需的. 总之,是否能确定一个适当的ramp-up time 取决于以下两条规则:第一个取样器的点击率(hit rate)是否接近其他取样器的平均值,从而能否避免ramp-up period 过小。在最后一个线程启动时,第一个线程是否在真正结束了,最好二者的时间要尽可能的长,以避免ramp-up period过大。
    • Loop Count 循环次数

    以下截图为100QPS配置

2.创建请求

  • 配置请求http IP port method path等

2.1创建请求头

  • 配置请求头

2.2创建View Results Tree

  • 添加View Results Tree,主要是可以看到每个采样请求的结果,配合断言,更清楚的看到请求成功或者失败

2.3创建Summary Report

  • 添加Summary Report,运行后的结果指标如下:

2.4创建Aggregate Report

  • 添加Aggregate Report,运行后的结果指标如下:

2.5创建Graph Results

  • 添加Graph Results,运行后的结果指标如下:

2.6创建Constant Throughput Timer

2.7创建JSON Assertion

3.导出jmx文件

4.线上运行

  • 进入JMeter安装目录下 ,并以命令方式执行脚本
  • 命令格式:./bin/jmeter -n -t .jmx文件(脚本) -l .jtl文件(测试运行结果文件)
    参数说明:
      -n表示以nogui方式运行测试计划
      -t表示测试计划,后面跟测试计划名称
      -l表示测试结果,后面跟测试结果文件名称
./bin/jmeter -n -t /home/test_code/adx_plan001.jmx  -l /home/test_result/test0311.jtl

5.线下分析

将test08131505.jtl导入测试计划查看结果即可。


四、QPS配置说明

20QPS配置

  • Constant Throughput Timer设置:

    • In sample per minute :1200
  • 线程组设置:
    • 线程数:20
    • 准备时长: 10
    • 循环次数:10

40QPS配置

  • Constant Throughput Timer设置:

    • In sample per minute :2400
  • 线程组设置:
    • 线程数:40
    • 准备时长: 10
    • 循环次数:10

80QPS配置

  • Constant Throughput Timer设置:

    • In sample per minute :4800
  • 线程组设置:
    • 线程数:80
    • 准备时长: 10
    • 循环次数:10

注意:真实情况下由于准备时长设置的偏差,QPS会有一些偏差,但是根据聚合报告中的95%响应时间和吞吐量可以衡量服务的性能情况。


总结

以上就是今天要讲的内容,本文主要是介绍Jmeter安装,创建接口测试计划,以及对接口的不同QPS压力测试的配置。

Jmeter安装部署及压力测试- QPS量化方法相关推荐

  1. linux下面jmeter对百度进行压力测试

    环境与版本: ubuntu19.10 Apache Jmeter 2.13.20180731 # apt install jmeter [1]中的一段问题写的很好: 虽然我们的需求是要我们同时,但是没 ...

  2. Jmeter教程 简单的压力测试

    Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 阅读目录 什么是压力测试 做压力测试的常用工具 做压力测试的 ...

  3. MAC结合LINUX进行Jmeter进行java代码压力测试

    一.环境准备 下载jdk包 地址:https://www.oracle.com/java/technologies/downloads/#java8 centos 下载 x64 Compressed ...

  4. Linux Centos7.x下安装部署Jira和confluence以及破解方法详述

    https://www.cnblogs.com/easonscx/p/10629173.html Linux Centos7.x下安装部署Jira和confluence以及破解方法详述 简述 JIRA ...

  5. Linux下nvidia压力测试,一种服务器linux系统下GPU压力测试的监控方法与流程

    本发明属于服务器测试技术领域,具体涉及一种服务器linux系统下GPU压力测试的监控方法. 背景技术: 随着社会的快速发展,人们对高网络性能.快速存储.大量内存.超高计算能力的GPU的需求越来越大,产 ...

  6. 服务总线yali测试_总线压力测试系统及其方法

    总线压力测试系统及其方法 [技术领域] [0001]本发明涉及一种压力测试系统及其方法,特别是指以快捷外设互联标准装置(PC1-E)产生压力数据流避免占用中央处理器使用时间的总线压力测试系统及其方法. ...

  7. Jmeter做接口的压力测试

    章节一压力测试课程介绍 1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介: 讲解课程安排,使用的Jmeter版本 讲课风格:涉及的组件,操作配置多,不会一次性讲解,会先讲部分 ...

  8. ab和jmeter进行GET/POST压力测试的使用心得和比较(转载,在ubuntu16.04下使用ab带json对centos7压力测试验证可用)

    引言: 互联网服务压测是非常重要的评价方法,ab,webbench,jmeter等都是业界流行的测试工具,ab和webbench作为shell模式下轻量级的测试工具,jmeter则作为有GUI界面的更 ...

  9. Linux学习13-CentOS安装ab做压力测试

    前言 网站性能压力测试是服务器网站性能调优过程中必不可缺少的一,测试环境准备好了后,如何对网站做压力测试? 压力测试的工具很多,如:ab.http_load.webbench.siege.jmeter ...

最新文章

  1. 对输入框以及选择框集体的数据检验
  2. IDEA Maven项目引入本地外部jar包
  3. css游戏代码_介绍CSSBattle-第一个CSS代码搜寻游戏
  4. TJU 2248. Channel Design 最小树形图
  5. 强制回收和IDisposable.Dispose方法
  6. 关于webcontrols的TreeView中转义符的处理问题
  7. SVN中update to revision与revert to revision的区别
  8. 测试mysql安装成功_MySQL安装之“测试”
  9. IntelliJ IDEA 的 Project Structure 窗口中的 Artifacts 勾选 Include in project build
  10. leetcode1221. 分割平衡字符串(贪心算法)
  11. go kegg_KEGG分析及可视化
  12. Hadoop优势,生态圈
  13. 机器学习的概念性的总结
  14. MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)
  15. 四个措施打造安全的DevOps流程
  16. Divisibility题解
  17. jQuery实现留言板案例
  18. C++数据库编程 ODBC连接SQL Server数据库
  19. 运维必须掌握的27道Linux面试题
  20. OpenFOAM动网格的通量修正

热门文章

  1. 素描绘画Sketch Touch
  2. 2021-2027全球与中国SIEM托管服务市场现状及未来发展趋势
  3. 计算机辅助设计高级绘图员技能鉴定试题(电路类),计算机辅助设计高级绘图员技能鉴定试题(电路类)3...
  4. 计算广告基础知识(一)
  5. OpenCV单目视觉定位(测量)系统【转载】
  6. 极乐小程序榜单(第六期)
  7. 开发陪玩游戏源码的后台管理系统,登录的实现是第一步!
  8. Corona图形特效-着色和渐变
  9. 多组学分析及可视化R包
  10. eclipse中,add jars和add library的区别