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

Locust模拟1000非并发用户:如何设置用户特定存活时长?

实现指定存活时长的非并发用户模拟

JMeter 实现方案

  • 先配置线程组:设置线程数为1000,将Ramp-Up时间设为你需要均匀分配用户的总时长(比如1小时内启动完就填3600秒),确保用户按时间均匀启动。
  • 控制用户存活时长:添加Runtime Controller到线程组下,设置运行时长(比如每个用户存活5分钟就填300秒),把所有用户操作逻辑放在这个控制器内,到时间后线程自动终止。
  • 进阶精准控制:可以结合__time()函数和Test Action,计算当前时间与用户启动时间的差值,一旦超过设定时长就触发线程退出逻辑。

Locust 实现方案

通过代码直接控制用户生命周期,灵活性更高:

from locust import HttpUser, task, between
import time

class AppUser(HttpUser):
    wait_time = between(1, 3)  # 任务间随机等待时间
    user_lifetime = 300  # 单个用户存活时长(秒)

    def on_start(self):
        self.start_timestamp = time.time()

    @task
    def perform_business_action(self):
        # 检查是否超过存活时长
        if time.time() - self.start_timestamp > self.user_lifetime:
            self.stop()
        # 执行实际业务请求
        self.client.get("/your-app/api/action")

启动时通过--users 1000 --spawn-rate [速率]控制均匀启动,比如1小时启动1000用户,spawn-rate设为1000/3600即可。

通用自定义脚本思路

如果用其他工具或需要完全自定义逻辑,可参考以下Python示例:

import threading
import time
import requests

def single_user_simulation(lifetime):
    start_time = time.time()
    while time.time() - start_time < lifetime:
        # 模拟用户操作
        requests.get("http://your-app.com/user-action")
        time.sleep(2)  # 模拟操作间隔

# 配置参数
total_users = 1000
total_rampup_duration = 3600  # 1小时内均匀启动
per_user_lifetime = 300  # 每个用户存活5分钟

# 均匀启动用户
for _ in range(total_users):
    threading.Thread(target=single_user_simulation, args=(per_user_lifetime,)).start()
    time.sleep(total_rampup_duration / total_users)  # 计算启动间隔

内容的提问来源于stack exchange,提问作者Mark Marky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:19:55