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

从wrk迁移至k6:参数对应关系及测试方法适配问询

wrk 迁移至 k6 的参数对应及完整测试示例

参数对应关系

直接对应wrk参数的k6配置项整理如下:

  • -d 1m(测试时长):k6 options.duration: '1m'
  • -c 256(总HTTP连接数):k6 options.http.maxConnections: 256
  • --timeout 30s:k6 options.http.timeout: '30s'
  • -R 16000(每秒总请求数):k6 options.rps: 16000
  • -q(静默模式):k6 执行时加--quiet参数

注:wrk的-t(线程数)在k6里没有直接对应——k6基于JS单线程模型,不需要手动指定OS线程数,你可以通过调整vus(虚拟用户数)配合rps来模拟相近的并发压力。

完整k6测试脚本

import http from 'k6/http';
import { open } from 'k6/fs';

// 读取请求文件,处理成请求列表
const requestsFile = open('./requests.reqs', 'r');
// 拆分每行并过滤空行,适配你的请求文件格式
const requests = requestsFile.split('\n').filter(line => line.trim() !== '');

export const options = {
  duration: '1m', // 对应wrk的-d 1m,测试持续1分钟
  rps: 16000, // 对应wrk的-R 16000,每秒发送16000次请求
  http: {
    timeout: '30s', // 对应wrk的--timeout 30s,请求超时时间30秒
    maxConnections: 256, // 对应wrk的-c 256,总HTTP连接数限制为256
    connectionReuse: true, // 保持连接复用,和wrk默认行为一致
  },
  // 如果需要调整虚拟用户数来配合压力控制,可以解开下面的注释
  // vus: 100,
};

export default function () {
  // 循环取请求,文件读完就从头开始,直到测试结束
  const currentReq = requests[__ITER % requests.length];
  if (currentReq) {
    // 假设你的requests.reqs每行是接口路径,比如/api/get-data
    // 如果是完整HTTP请求格式(含方法、headers、body),需要额外解析调整
    const fullUrl = `http://localhost:8080${currentReq}`;
    http.get(fullUrl); // 根据实际请求方法改成post/put等
  }
}

执行说明

运行脚本的命令对应wrk的调用方式:

k6 run --quiet script.js

--quiet参数对应wrk的-q,会减少日志输出,只保留核心测试结果。

如果你的requests.reqs里是完整的HTTP请求(比如包含POST /api/user HTTP/1.1、请求头、请求体),需要额外解析每行内容,拆分出请求方法、路径、headers和body,再调用http.request()方法发送,示例片段如下:

// 假设每行是完整请求,拆分示例(需根据实际格式调整)
const [methodPath, ...headersBody] = currentReq.split('\n');
const [method, path] = methodPath.split(' ');
const headers = {};
let body = '';
let isBody = false;
for (const line of headersBody) {
  if (line.trim() === '') {
    isBody = true;
    continue;
  }
  if (isBody) {
    body += line;
  } else {
    const [key, value] = line.split(': ', 2);
    headers[key] = value;
  }
}
http.request(method, `http://localhost:8080${path}`, body, { headers });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:15:34