oha
oha 核心内容总结
项目功能
oha 是一个基于 Rust 的 HTTP 负载生成工具,灵感来自 rakyll/hey,支持实时 TUI 界面,用于向 Web 应用发送负载并监控性能。
主要特性
- 实时 TUI 监控:显示请求速率、延迟、成功/失败统计等实时数据。
- 灵活的负载控制:支持通过
-n(请求数)、-c(并发连接数)、-q(QPS)等参数控制负载,可结合--burst-delay和--burst-rate实现突发流量模拟。 - 多协议支持:支持 HTTP/1.1、HTTP/2、HTTP/3(实验性),可禁用 Keep-Alive 以模拟真实用户行为。
- 动态 URL 生成:通过
--rand-regex-url自动生成随机 URL,用于更真实的负载测试。 - 多输出格式:支持文本、JSON、CSV 格式输出,可记录成功请求至 SQLite 数据库。
- 性能优化:禁用 TUI 时采用更高效的实现,提升吞吐量。
使用方法
- 安装:通过
cargo install oha或下载预编译二进制文件,支持 Arch Linux(pacman)、Homebrew(brew)、Windows(winget)等平台。 - 基本命令:
Terminal window oha -c 100 -q 1000 http://example.com-c:并发连接数-q:每秒查询数(QPS)--latency-correction:修正延迟统计(避免“协调遗漏问题”)--disable-keepalive:禁用 TCP 连接复用(模拟真实用户场景)
- 高级功能:
- 从文件读取 URL:
--urls-from-file urls.txt - 动态 URL:
--rand-regex-url http://127.0.0.1/[a-z][a-z][0-9] - 输出 JSON:
--output-format json
- 从文件读取 URL:
适用场景
- Web 服务器压力测试
- 性能基准测试
- 模拟真实用户访问模式(如突发流量、多页面请求)