Skip to content

使用 OHA 进行压力测试

什么是 OHA?

Ohayou(おはよう) 是一个用 Rust 编写的轻量级 HTTP 负载生成器,它能够向 Web 应用发送负载,并实时显示 TUI。这个程序由 tokio 提供动力,并使用了由 ratatui 创建的美观的 TUI。

相比于许多传统的性能测试工具,OHA 的特点是简单易用,且性能非常高,能够在高并发场景下提供良好的测试体验。

安装 OHA

  • 在 Windows 上还可以直接使用 winget 来安装:
shell
winget install hatoo.oha
  • 下载 .exe

https://github.com/hatoo/oha/releases/download/v1.16.0/oha-windows-amd64.exe

powershell
//  :: 1. 改名
ren oha-windows-amd64.exe oha.exe

// :: 2. 扔进 Windows 目录(自动在 PATH 里,全局可用)
move oha.exe C:\Windows\

// :: 3. 验证
oha --version

OHA 核心参数

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

使用 OHA

这个命令会向 https://example.com 发送 200 个请求,使用 50 个并发连接。

shell

oha https://example.com

指定请求数量和并发数

https://example.com 发送 1000 个请求,使用 100 个并发连接。

shell
oha -n 1000 -c 100 https://example.com

指定压测时间

持续 10 秒发送请求。

shell
oha -z 10s https://example.com

QPS 限速

每秒 100 个请求的速度向 https://example.com 发送请求。

shell
oha -q 100 https://example.com

进阶用法

带参数

使用 10 个并发,共发送 200 个请求。

shell
oha -m GET -H "Authorization: Bearer eyJhbGciOXVCJ9.eyJodHRwOi8vc2NoZW1hcy543po" -H "Content-Type: application/json" -n 200 -c 10 "https://example.com/data-sync/get-mailaddress-page?pageIndex=1&pageSize=1000&remoteVersion=31484"

组合测试

进行 10 秒的压测,使用 100 个并发连接,每秒 100 个请求的速率,并启用延迟修正,关闭 keep-alive 连接。

shell
oha -z 10s -c 100 -q 100 --latency-correction --disable-keepalive https://example.com

蜀ICP备2025150039号