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

Artillery负载测试payload文件每行数据重复发送问题如何解决

解决方案

1. 修复测试阶段的语法错误

你当前的phases配置存在语法问题,把同一个测试阶段的duration和arrivalRate拆成了两个独立的阶段对象,导致实际运行逻辑不符合预期:

原错误配置:

phases:
  - duration: 30
  - arrivalRate: 10

上述配置等价于定义了两个测试阶段:第一个阶段时长30秒,使用默认的每秒1个虚拟用户(VU)的速率;第二个阶段未定义时长会持续运行,速率为每秒10个VU。这就导致仅30个VU被创建,每个VU被复用10次发送请求,因此每个VU绑定的同一行payload数据被重复发送10次。

正确的单阶段配置要把两个参数放在同一个对象中:

phases:
  - duration: 30
    arrivalRate: 10

如果你想要更严格控制总请求数,也可以用arrivalCount参数,效果一致(30秒内均匀创建300个VU,速率刚好每秒10次):

phases:
  - arrivalCount: 300
    duration: 30

2. 补充payload配置避免循环复用

在payload配置中添加loop: false,确保payload行不会被循环复用,所有行用完后如果还有新的VU会直接结束测试,避免数据重复:

payload:
  path: "../SampleData.csv"
  fields:
    - "userId"
    - "username"
    - "password"
  order: sequence
  skipHeader: true
  loop: false # 新增这行配置

最终完整可用配置

config:
  target: http://localhost:8000
  payload:
    path: "../SampleData.csv"
    fields:
        - "userId"
        - "username"
        - "password"
    order: sequence
    skipHeader: true
    loop: false
  phases:
    - duration: 30
      arrivalRate: 10
scenarios:
  - flow:
      - post:
          url: "/register"
          json:
            uid: "{{ userId }}"
            alias: "{{ username }}"
            password: "{{ password }}"

这个配置运行后,每个新建的VU都会按顺序拿到payload里的一行新数据,每个VU仅执行一次POST请求就退出,刚好300个请求对应300行payload,速率为每秒10次,完全符合预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:36:05