Repolode
hatoo

hatoo/oha

用 Rust 编写的命令行 HTTP 压测工具,灵感来自 hey,带实时终端界面。

Star
10,629
Fork
306
未关闭 Issue
59
最近提交
3天前

这是什么?

oha 是一个命令行 HTTP 压测工具,可以对 Web 应用发送请求负载,并在实时终端界面中展示结果。它参照 rakyll/hey 设计,选项风格与之相近,但 -q 参数表示整体每秒请求数,而不是每个 worker 的请求数。

工具支持 HTTP/1.1、HTTP/2(可为每个连接设置并行请求数)以及实验性的 HTTP/3。可以控制请求速率、突发模式和压测时长,也可以基于正则生成随机 URL,或从文件读取 URL 列表。开启延迟校正可避免协调遗漏(coordinated omission)问题。输出支持文本、JSON、CSV 和静默模式,成功的请求还可以写入 SQLite 数据库。

项目基于 tokio 和 ratatui 构建,支持 rustls 或 native-tls 两种 TLS 实现、客户端证书、AWS SigV4 签名、代理、Unix socket 以及 VSOCK。可通过 Cargo、Homebrew、Arch Linux、winget 和 Docker 安装。

核心功能

  • 01运行时通过实时终端界面展示吞吐量和延迟。
  • 02支持 HTTP/1.1、HTTP/2,以及实验性的 HTTP/3。
  • 03可按 QPS 限速、设置突发模式,并支持按时长运行。
  • 04可基于正则生成随机 URL,或从文件读取 URL 列表。
  • 05输出支持文本、JSON、CSV 和静默模式。
  • 06提供延迟校正选项,避免协调遗漏问题。
  • 07支持 TLS 配置、客户端证书、代理和 AWS SigV4 签名。

适用场景

  • 发布前对 Web 服务做压力测试,观察其在并发下的表现。
  • 对比同一接口在 HTTP/1.1 与 HTTP/2 下的性能。
  • 用访问日志中的 URL 回放请求,模拟更真实的流量分布。
  • 在 CI 或脚本中通过 JSON 或 CSV 输出快速完成基准测试。

快速上手

  1. 1

    使用 Cargo 安装 oha(需要 Rust、make 和 cmake)

    cargo install oha
  2. 2

    参照 README 的 Usage 部分,对目标 URL 运行 oha

使用前须知

  • 通过 Cargo 从源码构建需要预先安装 make 和 cmake。
  • HTTP/3 功能处于实验阶段,且依赖 rustls 作为 TLS 实现。
  • README 仅列出了测试过的平台(Linux、Windows 10、macOS),未声明更广泛的支持。

收录于专题

标签

常见问题

oha 是什么?
用 Rust 编写的命令行 HTTP 压测工具,灵感来自 hey,带实时终端界面。 oha 是一个命令行 HTTP 压测工具,可以对 Web 应用发送请求负载,并在实时终端界面中展示结果。它参照 rakyll/hey 设计,选项风格与之相近,但 -q 参数表示整体每秒请求数,而不是每个 worker 的请求数。
oha 可以免费使用吗?用的什么许可证?
oha 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
oha 还在维护吗?
活跃维护中。oha 最近一次提交是在 2026年10月22日。
oha 适合用来做什么?
发布前对 Web 服务做压力测试,观察其在并发下的表现。 对比同一接口在 HTTP/1.1 与 HTTP/2 下的性能。 用访问日志中的 URL 回放请求,模拟更真实的流量分布。 在 CI 或脚本中通过 JSON 或 CSV 输出快速完成基准测试。
oha 怎么安装和运行?
使用 Cargo 安装 oha(需要 Rust、make 和 cmake): cargo install oha 参照 README 的 Usage 部分,对目标 URL 运行 oha
在哪里获取 oha?
源代码和安装说明在 GitHub 上:https://github.com/hatoo/oha

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目