并发用户数即线程组中启动的线程总数。每个线程独立执行采样器(Sampler)并维护自己的上下文,模拟一个真实的虚拟用户。
Ramp-Up Period则是 JMeter 从第一个线程启动到最后一个线程启动所花费的总时间(单位:秒)。它决定了负载施加的坡度。
两者的关系直接决定了负载的攀升速率。如,设置线程数为100,Ramp-Up Period 为10秒,意味着 JMeter 将在10秒内均匀启动这100个线程,平均每秒启动10个线程。如果Ramp-Up Period 设为 0,则所有线程会在测试开始的一瞬间同时启动,对服务器造成瞬时冲击,这一般用于极限压力测试或证实系统在突发流量下的表现,在绝大多数常规性能测试中并不推荐。
怎样科学设置并发用户数和 Ramp-Up Period
1. 确定并发用户数的标准
并发用户数并不是随意填写,而是根据业务场景或容量规划目的。可以通过以下方式进行:
业务高峰预估:根据生产环境的历史数据,了解系统在业务高峰期的在线用户数或每秒请求数(TPS),然后通过换算得到并发用户数。
目的TPS反推:如果已知目的 TPS(如 1000 请求/秒),且每个虚拟用户在一次迭代中发出 N 个请求,平均响应时间为 T 秒,则可估算所需并发用户数 ≈ 目的 TPS × 平均响应时间(利特尔法则)。
梯度试探:如果对系统容量未知,可以通过多次运行,逐步增加线程数(如从 10 到 50 到 100)来观察响应时间和 TPS 的变化,从而找到性能拐点。
2. 设定合理的Ramp-Up Period
Ramp-Up Period设置直接影响到测试的平滑性和真实性。一般按照以下原则:
避免瞬时冲击:除非测试目的是证实系统在瞬间高并发下的稳定性(如秒杀场景),否则应避免将 Ramp-Up Period 设为零或过小。过小的 Ramp-Up 会让服务器在测试开始阶段承受远高于后续平稳期的压力,导致测试结果偏向悲观,且难以区分短板是由于负载上升过快还是系统自身容量不足。
模拟真实用户:在实际生产环境中,用户往往是陆续登录和操作的,不是同时涌入。因此Ramp-Up Period应当足够长,来模拟一个自然的负载爬升过程。常用的经验是:Ramp-Up Period 至少应大于线程数除以 5 到 10 的值,保证每秒启动的线程数不超过服务器的承受能力。如,100 个线程,建议 Ramp-Up 设为 20~30 秒,即每秒启动 3~5 个用户。
和测试时长协调:Ramp-Up Period 应当包含在测试的总时长之内。如果测试计划不断 30 分钟,Ramp-Up 设为 5 分钟,那么实际稳定负载运行时间为 25 分钟。需要保证在 Ramp-Up 结束后,有足够的稳定期(Sustain Period)来观察系统在满负载下的表现。
阶梯式负载替代方案:如果需要更精细的阶梯式加压(如每 1 分钟增加 10 个用户),单一的线程组难以实现。此时推荐使用 Stepping Thread Group 或 Concurrency Thread Group 插件,它们提供了更直观的阶梯加压配置。