You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JMeter实现每分钟100用户、持续1小时的网站压测?

问题分析与解决方案

核心问题根源

当前配置Number of threads=6000、Ramp.up period=3600s的逻辑是让JMeter在1小时内尽可能均匀启动6000个线程,但这只是近似均匀,并非绝对精准的每分钟100个。另外,若单个用户的请求执行时长(从线程启动到请求完成的总耗时)短于1分钟,会导致同一分钟内有更多线程完成请求,被误判为“超量访问”;加上JMeter线程调度的微小波动,就会出现部分时段实际访问用户数超出要求的情况。

精准控制每分钟100用户的可行方案

方案1:线程组+定时器组合(无需插件,推荐)

放弃大线程数+长Ramp-up的思路,改用固定线程数循环+延迟的方式精准控制:

  • 设置Number of threads=100,Ramp-up period=60s(1分钟内启动100个线程)
  • 设置Loop Count=60(循环60次,覆盖1小时测试时长)
  • 添加Constant Timer,配置Thread Delay (in milliseconds)=60000(每个线程完成一次请求后,等待60秒再发起下一次)

注意:如果你的请求本身执行时长较长,需要将定时器延迟时间调整为60000 - 请求平均执行时长(毫秒),确保请求执行时长+延迟时间=60秒,这样就能保证每分钟恰好产生100个新用户访问。

方案2:使用Arrivals Thread Group(精准速率控制)

JMeter的Arrivals Thread Group(需通过JMeter插件管理器安装)可以直接按“每分钟X个用户”的速率生成请求,完全匹配你的需求:

  • 选择Arrivals Thread Group
  • 设置Target Rate (arrivals/min)=100
  • 设置Ramp-up Time (minutes)=1(可选,平滑过渡到目标速率,避免瞬间压力)
  • 设置Duration (minutes)=60(测试持续1小时)
  • 设置Max Threads为足够大的值(比如200,防止因请求耗时过长导致线程不足)
    这个组件会严格按照设定速率触发用户请求,彻底解决速率波动问题。

方案3:原线程组补充吞吐量定时器

如果坚持使用原线程组配置,可添加Constant Throughput Timer强制限制请求速率:

  • 添加Constant Throughput Timer
  • 设置Target throughput (in samples per minute)=100
  • 选择Calculate throughput based on为All active threads (shared)
    该定时器会通过延迟线程执行的方式,将整体请求速率控制在每分钟100次,抵消线程启动波动带来的影响。

JMeter用户管理逻辑说明

  • 每个线程对应一个虚拟用户,线程启动后立即执行请求,完成设定的Loop次数后停止。
  • 单用户平均访问时长=线程启动到请求执行完成的总耗时,包含请求发送、服务器响应、本地处理等所有环节的时间。
  • Ramp-up period的作用是控制线程启动间隔,理论间隔为Ramp-up时间/线程数,但实际受JMeter调度精度、系统资源影响,无法做到绝对均匀。

内容的提问来源于stack exchange,提问作者Arden Savas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:20:54