Appearance
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/login2. 限速发压
模拟稳定的每秒 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:84434. 禁用 Keep-Alive 模拟真实用户
模拟真实用户行为,每个请求使用独立连接。
bash
oha --disable-keepalive -n 10000 -c 200 https://example.com5. 脚本化使用 (JSON 输出)
在 CI/CD 脚本中使用,输出 JSON 结果便于程序解析。
bash
oha --no-tui --output-format json -o result.json -n 1000 -c 50 https://example.com