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

如何使用JMeter执行跨3天的周期性Soak Test(每日启停调度)

实现JMeter定时启停的3天Soak Test方案

方案1:操作系统任务计划调度(最稳定可靠)

直接利用系统自带的任务调度工具,拆分每日测试任务,避免JMeter长时间idle导致的数据记录中断问题。

操作步骤:

  1. 配置JMeter测试计划
    • 线程组设置持续时间为14小时(换算为秒:14*3600=50400),确保从当日8:00启动后,自动运行到22:00停止。
    • 为结果文件和日志文件添加日期后缀,避免每日数据覆盖,比如使用${__time(yyyyMMdd)}作为文件名的一部分,示例命令中的命名规则会自动按日期生成文件。
  2. 创建每日启动任务
    • Windows:打开「任务计划程序」,创建每日8:00触发的任务,执行命令:
      jmeter -n -t your-test-plan.jmx -l result-${__time(yyyyMMdd)}.jtl -j jmeter-${__time(yyyyMMdd)}.log
      
    • Linux/macOS:编辑crontab(执行crontab -e),添加定时启动规则:
      0 8 * * * /path/to/jmeter/bin/jmeter -n -t /path/to/your-test-plan.jmx -l result-$(date +\%Y\%m\%d).jtl -j jmeter-$(date +\%Y\%m\%d).log
      
  3. 设置自动终止(可选)
    因为线程组已配置14小时运行时长,JMeter会自动在运行满时长后退出。若需强制兜底,可添加每日22:00的终止任务:
    • Windows:任务中执行taskkill /F /IM jmeter.exe
    • Linux/macOS:crontab添加0 22 * * * pkill -f jmeter
  4. 控制总测试周期
    将任务调度设置为仅执行3天,或在第3天测试结束后手动关闭任务计划。

方案2:JMeter内部逻辑控制实现

无需依赖系统调度,通过JMeter内置控制器和脚本实现自动启停循环。

操作步骤:

  1. 添加循环控制器
    设置循环次数为3,对应3天的测试周期。
  2. 配置日间运行逻辑
    • 在循环控制器内添加线程组,设置线程数、Ramp-Up时间,以及持续时间为14小时(50400秒)。
    • 添加JSR223定时器,确保测试在8:00后才启动,脚本示例:
      def now = new Date()
      def startHour = 8
      if (now.hours < startHour) {
          // 计算等待到8:00的毫秒数
          def waitMillis = (startHour - now.hours) * 3600000 - now.minutes * 60000 - now.seconds * 1000 - now.milliseconds
          sleep(waitMillis)
      }
      
  3. 添加夜间暂停逻辑
    在循环控制器内的线程组之后,添加JSR223 Sampler,实现10小时的夜间暂停:
    sleep(10 * 3600000) // 从22:00暂停至次日8:00
    
    注意:此方式下JMeter会全程保持运行状态,需确保测试机器不会进入休眠,且进程稳定。

原教程问题说明

原教程仅设置了线程组的单次固定运行时长,未实现每日启停的循环逻辑,因此测试运行完设置时长后进入idle状态,无法自动触发后续周期的测试。上述两种方案分别通过外部调度和内部逻辑,解决了定时启停和多周期循环的需求。

内容的提问来源于stack exchange,提问作者sai yerunkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:15:24