jmeter性能测试

安装插件

Jmeter_jmeter-plugins插件的安装使用 - 码上测 - 博客园

1. 梯度压测

并发量是指在同一时间点或在一个特定的时间段内,同时对服务器或系统发起请求的虚拟用户(线程)的数量

步骤1: 安装插件: custom thread groups 

找到: custom thread groups  , 再点击 apply changes and restart jmeter 即可安装成功

对应插件位置: 

具体配置对应的语义和并发行为如下图所示:

this goup will start语义: 表示最多启动多大线程。对应图中的峰顶的值
first wait for语义: 从运行之后多长时间开始启动线程;若设置为60秒, 对应图中开头的底部横线。
then start语义: 表示第一次要启动几个线程。 对应图中第一个上升线。
next add语义 + threads every 语义: 表示每隔多少秒启动多少个线程。对应图中的上升梯度线。
using ramp-up 语义: 其中与普通线程组一样表示启动线程的时间。 对应图中的上升梯度线的斜度,越大越斜表示用的时间越久。
then hold load for语义: 表示达到最大线程后保持最大线程持续执行多久。 对应图中的峰顶的横线。
finally sotp + threads every语义: 达到峰顶后,表示每隔多少秒释放多个线程。 对应图中的下降梯度线

步骤2: 性能测试过程中的监控  

在插件列表搜索: jpgc  ,勾选对应的插件,再点击 apply changes and restart jmeter 即可安装成功

在监听器下可看到对应的插件

步骤3: 查看性能指标:   可通过聚合报告、汇总报告来查看

响应时间

若响应时间超过了要求,则代表了到了瓶颈 ;

性能的要求是由:产品,业务,技术负责人来要求的

注意事项: 看在多少线程的时候,发生了超标

响应时间的变化的原因: 系统不稳定,随着并发压力变大而越来越慢

举例:假设我们要求响应时间 小于10ms , 得到时间点,然后在 线程组的图中,得到当前压测的线程组数量

错误率

错误率很高的原因: 接口请求错误,服务器处理不了,后端系统限流

qps 

qps :Queries Per Second  , 比如 进入淘宝,只看数据 ; 指系统每秒能够处理的查询或请求数量,是衡量系统性能的重要指标之一。在性能测试中,QPS 通常用于评估系统在高并发场景下的处理能力

QPS 与其他指标的关系

  1. QPS 与并发用户数

    • QPS 与并发用户数成正比,但并非线性关系。当并发用户数增加到一定程度时,QPS 可能达到系统瓶颈,不再增长

  2. QPS 与响应时间

    • 当 QPS 增加时,响应时间可能会逐渐变长。如果响应时间急剧增加,可能意味着系统已达到性能瓶颈

  3. QPS 与错误率

    • 当 QPS 超过系统处理能力时,错误率(如超时、5xx 错误)可能会显著上升

如何优化 QPS

  1. 优化代码

    • 减少不必要的计算和数据库查询。

    • 使用缓存(如 Redis)减少重复请求的处理时间 

  2. 增加硬件资源: 提升 CPU、内存、磁盘 I/O 等硬件资源。使用负载均衡分散请求压力 

  3. 数据库优化:优化 SQL 查询,添加索引。 使用数据库连接池减少连接开销

  4. 异步处理: 将耗时操作异步化,减少请求处理时间

吞吐量

  • 系统在单位时间内处理的请求数量或数据量

  • 可以用多种单位表示:请求数/秒、页面数/秒、字节数/秒等

查看吞吐量的变化,当吞吐量相对稳定,或者变低  ----则说明达到了系统的性能瓶颈

tps

tps :transaction,  比如进入淘宝, 购买东西产生数据变化 ;系统每秒能够处理的事务数量

TPS 的定义

  • 事务(Transaction):在性能测试中,事务通常指一个完整的业务操作。例如:

    • 用户登录。

    • 下单支付。

    • 数据库插入或更新操作  

如何优化 TPS

在性能测试中,如果 TPS 低于预期,可以从以下方面进行优化:

  • 服务器性能:检查服务器的 CPU、内存、磁盘 I/O 等资源是否充足。

  • 网络延迟:确保网络带宽和延迟不会成为瓶颈。

  • 数据库优化:优化查询语句、索引和连接池配置。

  • 代码性能:检查应用程序代码是否存在性能问题。

  • JMeter 配置

    • 增加线程数(模拟更多用户)。

    • 调整 ramp-up 时间(逐步增加负载)。

    • 使用分布式测试(多台机器同时测试)。 

吞吐量变化规律

波动很大 ----代表系统不稳定

慢慢变高 ----和并发量相关联,当并发量小于吞吐量的时候,慢慢增大并发量, 吞吐量增加 , 若一直在变高,则说明并发量还不够

慢慢变低 ---- 并发量减少 ; 系统变卡,导致并发量减少

2. 性能指标

一、核心性能指标分类

1. 系统资源指标(服务器侧)
指标说明正常范围监控工具
CPU使用率处理器负载情况<70% (长期)topnmonPrometheus
内存使用率物理内存和Swap占用<80% (避免OOM)free -mGrafana
磁盘I/O读写吞吐量(MB/s)和延迟(ms)依赖磁盘类型(SSD/HDD)iostatsar
网络带宽入站/出站流量(Mbps)不超过带宽的80%iftopnload

2. 应用性能指标(JMeter直接测量)
指标计算公式/说明行业基准JMeter获取方式
吞吐量 (Throughput)请求数/秒 = 总请求数/测试时长(s)越高越好Aggregate Report
响应时间 (Response Time)从请求发送到接收响应的时间(平均/90%/95%分位)<1s (Web), <100ms (API)Summary Report
并发用户数 (Concurrent Users)同时活跃的虚拟用户数(≠线程数)根据业务需求设定Active Threads Listener
错误率 (Error Rate)错误请求数/总请求数 × 100%<1%HTML Report
TPS (Transactions Per Second)每秒完成的事务数(如登录/支付)业务关键指标Transactions per Second
Latency请求发送到开始接收响应的时间(网络延迟)越接近响应时间越好Latency vs Time

QPS (Queries Per Second)

每秒查询率:系统每秒能够响应的查询请求数量

PV (Page Views)

页面浏览量:页面被加载显示的总次数

UV (Unique Visitors)

独立访客数:统计周期内访问系统的唯一用户数

基于用户标识(如cookie/账号/IP+设备)

二、关键指标详解与JMeter实现

1. 吞吐量(Throughput)
  • 定义:系统每秒处理的请求数(RPS)。

  • JMeter查看

    • Aggregate Report 中的 Throughput 列

    • Throughput Shaping Timer 控制目标吞吐量

2. 响应时间分布
  • 关键分位数

    • 平均响应时间:易受极端值影响

    • 90% Line:90%请求的响应时间低于此值(更可靠)

  • JMeter图表

    graph LR
      A[Response Times Over Time] --> B[发现响应时间突增]
      A --> C[定位性能瓶颈]

3. 并发模型
  • 并发用户 ≠ JMeter线程数

    • 实际并发 = 活跃线程数 × 循环次数 / 测试时长

  • 监控工具

    • Active Threads Over Time 监听器

三、行业基准参考

应用类型平均响应时间可接受错误率吞吐量要求
电商网站<2秒<0.5%1000+ RPS
金融API<200ms<0.1%300+ TPS
物联网设备上报<1秒<1%5000+ messages/sec

3. 分布式压测

分布式压测(Distributed Load Testing)是指将压力测试任务分散到多台机器上同时执行,以模拟大规模用户并发访问系统的测试方法

分布式压测准备工作

1. 环境要求

  • 所有机器(主控机和执行机)需要在同一局域网

  • 所有机器安装相同版本的 JMeter 和 Java

  • 关闭防火墙或开放相应端口(默认使用 1099 和随机端口)

2. 执行机(Slave)配置

步骤 1: 修改 jmeter.properties 文件

# 取消注释并修改server.rmi.ssl.disable为true
server.rmi.ssl.disable=true

# 设置执行机的RMI端口(可选)
server_port=1099

步骤 2: 启动执行机

jmeter-server.bat (Windows)
或
./jmeter-server (Linux/Mac)

3. 主控机(Master)配置

步骤 1: 修改 jmeter.properties 文件

# 取消注释并修改remote_hosts,添加所有执行机IP
remote_hosts=192.168.1.101,192.168.1.102,192.168.1.103

# 取消注释并设置server.rmi.ssl.disable为true
server.rmi.ssl.disable=true

执行分布式测试

  1. 在主控机打开 JMeter GUI

  2. 创建或打开测试计划

  3. 通过菜单运行测试:

    运行(R) > 远程启动 > 选择单个执行机
    或
    运行(R) > 远程启动所有

注意事项

  1. 数据文件处理

    • 如果测试中使用 CSV 等数据文件,需要确保所有执行机都有相同的文件路径

    • 或者使用主控机的文件,JMeter 会自动分发

  2. 监听器数据

    • 默认情况下,监听器只显示主控机数据

    • 要获取所有执行机数据,需使用 "聚合报告" 等监听器

  3. 网络带宽

    • 确保网络带宽足够,避免成为瓶颈

  4. 资源监控

    • 监控执行机的 CPU、内存和网络使用情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值