Jmeter-负载测试

目录

[一. 基础负载测试场景:固定并发用户数](#一. 基础负载测试场景:固定并发用户数)

1、线程组配置

2、HTTP请求配置

3、添加定时器

4、添加监听器

[4.1 聚合报告](#4.1 聚合报告)

[4.2 响应时间图](#4.2 响应时间图)

[4.3 查看结果树](#4.3 查看结果树)

5、结果分析指标

[二. 阶梯式加压场景(逐步增加并发)](#二. 阶梯式加压场景(逐步增加并发))

1、插件安装

2、阶梯配置

3、HTTP请求配置

4、监听器配置

[4.1 Active Threads Over Time:查看并发用户数变化曲线](#4.1 Active Threads Over Time:查看并发用户数变化曲线)

[4.2 Response Time Over Time:观察并发响应时间变化曲线](#4.2 Response Time Over Time:观察并发响应时间变化曲线)

[4.3 聚合报告](#4.3 聚合报告)

5、结果分析指标

三、峰值流量场景(突发流量冲击)

1、插件安装

2、配置突发流量模型

3、HTTP请求配置

4、监听器配置

[4.1 Active Threads Over Time:查看并发用户数变化曲线](#4.1 Active Threads Over Time:查看并发用户数变化曲线)

[4.2 Response Time Over Time:观察并发响应时间变化曲线](#4.2 Response Time Over Time:观察并发响应时间变化曲线)

[4.3 聚合报告:统计错误率、平均响应时间等核心指标](#4.3 聚合报告:统计错误率、平均响应时间等核心指标)

[4.4 Composite Graph:叠加显示RPS、响应时间、活跃线程数,定位性能拐点](#4.4 Composite Graph:叠加显示RPS、响应时间、活跃线程数,定位性能拐点)

5、结果分析指标

四、生成报告


一. 基础负载测试场景:固定并发用户数

场景:验证系统在预期最大并发下的稳定性,验证系统在固定并发用户数下的响应时间、吞吐量和错误率。

例如:模拟 100 用户同时访问登录接口,持续 10 分钟。

1、线程组配置

右键"测试计划" → 添加线程组(添加 > 线程(用户) > 线程组

  • 线程数(用户数):100

  • Ramp-Up 时间:0 秒(立即启动所有线程,模拟瞬时并发)

    如果希望逐步加压后再保持并发,10 秒(用户逐步启动)

  • 循环次数 :设为 Forever,通过 Scheduler 设置持续时间 600 秒(10 分钟)。

2、HTTP请求配置

右键线程组 → 添加 → 取样器→ 选择 HTTP请求

具体配置,详见文章:Jmeter-功能测试

3、添加定时器

精确模拟瞬时并发:右键HTTP请求 → 添加 → 定时器 →同步定时器

4、添加监听器

4.1 聚合报告

右键线程组 → 添加→监听器→聚合报告

4.2 响应时间图

右键线程组 → 添加→监听器→响应时间图

4.3 查看结果树

仅调试时使用,正式压测需禁用,避免内存溢出

右键线程组 → 添加→监听器→查看结果树

5、结果分析指标

指标 说明
Samples 总请求数
Average RT 平均响应时间(应低于业务阈值,如500ms)
Throughput 每秒处理请求数(TPS),越高说明系统吞吐能力越强
Error % 错误率(应接近0%,异常请求需排查原因)
90% Line (RT) 90%请求的响应时间小于该值(反映长尾性能)

二. 阶梯式加压场景(逐步增加并发)

场景:逐步增加并发用户数,观察系统性能拐点(如响应时间陡增、错误率上升),确定系统能承受的最大并发用户数。

例如:每 2 分钟增加 50 用户,直到达到 300 用户,持续5分钟。

1、插件安装

安装插件管理器:JMeter Plugins Manager 具体安装步骤:略

选项-->Plugins Manager-->Available Plugins-->搜索并安装 Concurrency Thread Group、3 Basic Graphs

2、阶梯配置

右键"测试计划" → 添加线程组(添加 > 线程(用户) > Stepping Thread Group)

  • 关键参数

    • This group will start 100 threads:总线程数(如100用户)

    • First, wait for 0 seconds:启动前等待时间

    • Then start 10 threads:初始并发用户数

    • Next, add 10 threads every 60 seconds:每60秒增加10用户

    • Using ramp-up 10 seconds:每次新增用户的启动时间

    • Then hold load for 300 seconds:达到最大并发后持续300秒

    • Finally, stop 5 threads every 1 seconds:释放线程速度(可选)

3、HTTP请求配置

右键线程组 → 添加 → 取样器→ 选择 HTTP请求

具体配置,详见文章:Jmeter-功能测试

4、监听器配置

4.1 Active Threads Over Time:查看并发用户数变化曲线

右键线程组 → 添加→监听器→Active Threads Over Time

4.2 Response Time Over Time:观察并发响应时间变化曲线

右键线程组 → 添加→监听器→Response Time Over Time

4.3 聚合报告

右键线程组 → 添加→监听器→聚合报告

5、结果分析指标

5.1 响应时间趋势

当并发增加时,响应时间是否线性增长?是否存在突增拐点?

5.2 吞吐量曲线

吞吐量是否随并发增加而上升?到达某一点后是否趋于稳定?

5.3 错误率变化

高并发阶段是否出现超时(如HTTP 504)或业务错误(如HTTP 500)?

三、峰值流量场景(突发流量冲击)

场景:模拟短时间内的高并发请求(如秒杀活动),测试系统抗突发流量能力。

例如:在 10 秒内启动 1000 用户访问下单接,保持30秒高并发。

1、插件安装

安装插件管理器:JMeter Plugins Manager 具体安装步骤:略

选项-->Plugins Manager-->Available Plugins-->搜索并安装 Custom Thread Groups、3 Basic Graphs、Composite Timeline Graph

2、配置突发流量模型

右键"测试计划" → 添加线程组(添加 > 线程(用户) > Ultimate Thread Group)

  • 关键参数

    复制代码
    Start Threads Count: 1000   (突发并发用户数)
    Initial Delay (sec): 0      (立即启动)
    Startup Time (sec): 10       (10秒内启动所有线程)
    Hold Load (sec): 30         (保持30秒高并发)
    Shutdown Time (sec): 10      (10秒内停止所有线程)

3、HTTP请求配置

右键线程组 → 添加 → 取样器→ 选择 HTTP请求

具体配置,详见文章:Jmeter-功能测试

4、监听器配置

4.1 Active Threads Over Time:查看并发用户数变化曲线

右键线程组 → 添加→监听器→Active Threads Over Time

4.2 Response Time Over Time:观察并发响应时间变化曲线

右键线程组 → 添加→监听器→Response Time Over Time

4.3 聚合报告:统计错误率、平均响应时间等核心指标

右键线程组 → 添加→监听器→聚合报告

4.4 **Composite Graph:**叠加显示RPS、响应时间、活跃线程数,定位性能拐点

右键线程组 → 添加→监听器→Composite Graph

5、结果分析指标

指标 健康标准 异常排查建议
错误率(Error %) <1% 检查服务器日志、数据库连接池、限流配置
平均响应时间(RT) 符合业务SLA(如≤2秒) 分析慢查询、GC停顿、网络带宽瓶颈
吞吐量(Throughput) 接近系统理论最大值 检查CPU/内存是否饱和、是否有锁竞争
活跃线程数 与配置的突发线程数一致 JMeter客户端资源是否充足

典型问题定位

  • 大量504 Gateway Timeout

    • 后端服务处理超时 → 优化SQL或增加服务超时阈值。
  • 频繁429 Too Many Requests

    • 触发限流 → 验证限流阈值是否合理,或扩容服务节点。
  • 数据库连接池耗尽

    • 错误日志显示Cannot get a connection → 增大连接池或引入缓存

四、生成报告

命令执行

bash 复制代码
jmeter -n -t testplan.jmx -l result.jtl -e -o report/
  • -n: 无GUI模式

  • -t: 测试计划文件

  • -l: 结果日志文件

  • -e -o: 生成HTML报告

相关推荐
zzhz9251 天前
Jmeter(性能指标、指标插件、测试问题、面试题、讲解稿)
java·jvm·jmeter
ylatin1 天前
jmeter web压力测试 压测
jmeter·压力测试
噔噔噔噔@1 天前
软件测试对于整个行业的重要性及必要性
python·单元测试·压力测试
开发者工具分享2 天前
压力测试未覆盖边界条件的后果有哪些
压力测试
zzhz9252 天前
Jmeter操作(数据库)
数据库·jmeter
小han的日常3 天前
Jmeter生成HTML测试报告
jmeter
熙客4 天前
Jmeter-功能测试
功能测试·jmeter
A~taoker5 天前
jmeter接口自动化+ant执行(方案)
运维·jmeter·自动化
OceanWaves19936 天前
jmeter 测试计划 用户自定义数据, 手动输入123是整数,但是粘贴123就是字符串
jmeter