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

如何调整JMeter重复请求配置,实现1000已登录用户中每秒仅50人访问子页面?

解决JMeter中1000已登录用户每秒仅50次请求的配置方案

听起来你现在遇到的核心问题是,1000个用户登录后同时触发子页面请求,直接把数据库CPU拉满了。要实现每秒仅50次请求的精准控制,我们可以利用JMeter的吞吐量调度组件来平滑请求节奏,具体方案如下:

方案一:使用Constant Throughput Timer(固定吞吐量定时器)

这是JMeter自带的经典组件,能稳定把请求速率控制在目标值:

  • 先移除原来的Constant Timer(避免和吞吐量定时器的间隔逻辑冲突)
  • 在你的Loop Controller内部、子页面请求的上方添加Constant Throughput Timer
  • 配置关键参数:
    • 吞吐量:输入3000(因为每秒50次,换算成分钟就是50*60=3000次/分钟)
    • Calculate throughput based on:选择All active threads in current thread group。这个选项会让JMeter自动分摊1000个已登录线程的请求频率,确保整体每秒只有50次请求打到数据库。

方案二:使用Precise Throughput Timer(精准吞吐量定时器)

如果需要更严格的每秒请求数控制,这个组件比Constant版本的精度更高:

  • 同样在Loop Controller内添加Precise Throughput Timer
  • 配置关键参数:
    • Target throughput:输入50
    • Units:选择per second
    • Throughput shaping:保持默认的Evenly distributed即可,它会均匀调度1000个线程,每秒精准触发50次请求。

额外注意事项

  • 登录阶段的同步:确保1000个用户都完成登录后再进入循环请求。如果你的登录是顺序启动的(比如Ramp-Up Period设为1000秒,每秒启动1个线程),等所有线程登录完成后再开始循环即可;如果是批量启动,建议在登录请求后添加Synchronizing Timer,设置Number of Simulated Users to Group By为1000,让所有线程登录完成后统一进入循环阶段。
  • Loop Controller的设置:保留Loop Controller让用户定期调用子页面即可,不需要再设置固定间隔——吞吐量定时器会自动根据目标速率调整每个线程的请求间隔(1000个线程每秒50次的话,平均每个线程每20秒发起一次请求,既满足定期调用需求,又避免了并发冲击)。

这样调整后,数据库的请求压力会被平滑控制在每秒50次,CPU负载应该就能回到合理范围了。

内容的提问来源于stack exchange,提问作者Robot Taekwon V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:32:29