Skip to content

OHA 压测

🚀 快速上手

oha 的基本命令格式如下:

bash
oha [选项] <目标URL>
  • 最简测试:使用默认参数(200个请求,50个并发)进行测试。
bash
  oha https://example.com
  • 指定请求总数和并发数
bash
 oha -n 1000 -c 100 https://example.com
  • 按持续时间测试:持续运行30秒:
bash
 oha -z 30s -c 50 https://example.com

⚙️ 常用选项详解

oha 提供了丰富的命令行参数来定制测试。

核心参数

参数说明示例
-n <N>总请求数。默认值: 200。-n 5000
-c <N>并发连接数。默认值: 50。-c 200
-z <DURATION>测试持续时间。与-n互斥,若指定则忽略-n-z 10s, -z 3m
-q <QPS>全局速率限制,即每秒请求数(QPS)。-q 100

请求定制

参数说明示例
-m, --method <METHOD>指定HTTP方法,如 GET, POST。-m POST
-H <HEADER>添加自定义HTTP头。-H "Authorization: Bearer token"
-d <BODY>设置请求体字符串。-d '{"key":"value"}'
-D <PATH>从文件读取请求体。-D ./data.json
-T <CONTENT-TYPE>设置 Content-Type 头。-T application/json
-a <USER:PASS>设置基础认证。-a admin:123456

连接与网络

参数说明示例
--http-version <VER>指定HTTP版本 (0.9, 1.0, 1.1, 2)。--http-version 2
-t <TIMEOUT>每个请求的超时时间。-t 5s
--insecure忽略无效的SSL证书。--insecure
--disable-keepalive禁用 Keep-Alive,每次请求都建立新连接。--disable-keepalive
--ipv4 / --ipv6仅使用IPv4或IPv6。--ipv4

输出与控制

参数说明示例
--no-tui禁用实时TUI界面--no-tui
--output-format <FORMAT>指定输出格式 (如 json, csv)。--output-format json
-o <FILE>将结果输出到文件。-o result.json
--fps <FPS>设置TUI界面的刷新帧率。--fps 30

🛠️ 实用场景示例

1. 发送 POST 请求

模拟向 API 提交 JSON 数据。

bash
oha -m POST -H "Content-Type: application/json" -d '{"username": "test", "password": "123"}' -n 500 -c 20 https://api.example.com/login

2. 限速发压

模拟稳定的每秒 200 个请求的流量,持续 15 秒。

bash
oha --rps 200 -z 15s -c 100 https://api.example.com/endpoint

注意:oha-q--rps 参数设置的是全局 QPS,而非每个 worker 的 QPS。

3. 测试内网自签名 HTTPS 服务

测试内网环境,忽略证书错误。

bash
oha --insecure -n 1000 -c 50 https://192.168.1.100:8443

4. 禁用 Keep-Alive 模拟真实用户

模拟真实用户行为,每个请求使用独立连接。

bash
oha --disable-keepalive -n 10000 -c 200 https://example.com

5. 脚本化使用 (JSON 输出)

在 CI/CD 脚本中使用,输出 JSON 结果便于程序解析。

bash
oha --no-tui --output-format json -o result.json -n 1000 -c 50 https://example.com

蜀ICP备2025150039号