当前位置:首页 > 技术分析 > 正文内容

告别“慢吞吞”:用 oha 让你的 HTTP 请求“飞”起来!

ruisui885个月前 (01-23)技术分析31

还在为测试 HTTP 接口的性能而烦恼吗?还在用那些笨重的工具吗?是时候认识一下 oha 了!这个用 Rust 编写的开源小工具,能让你像玩游戏一样轻松搞定 HTTP 压力测试,而且还自带炫酷的实时 TUI 界面,简直是程序员的福音!

一、什么是 oha?

oha,日语“おはよう”(早上好)的意思,正如其名,它是一个小巧、快速的 HTTP 负载生成器。灵感来源于 rakyll/hey,并由 tokio 和 ratatui 驱动。它不仅速度快,而且功能强大,支持跨平台(Linux、Windows、macOS),还可选支持 native-tls 和 vsock。更重要的是,它有一个实时 TUI 界面,让你随时掌握测试进度,就像在玩一个实时战略游戏一样!

1. 主要特性

  • 实时 TUI 显示: 告别黑乎乎的命令行,实时查看测试数据,一目了然。
  • Tokio 和 Ratatui 驱动: 性能与美观兼得,充分发挥 Rust 的强大力量!
  • 跨平台支持: 不论你使用什么操作系统,都能轻松运行。
  • 可选支持 native-tls 和 vsock: 满足你各种高级需求。
  • JSON 输出支持: 方便进行数据分析。
  • 突发模式和动态 URL 生成: 模拟真实场景,测试更加精准。
  • 从文件读取 URL: 批量测试,效率翻倍。
  • 延迟校正: 避免协同省略问题,确保测试结果更可靠。
  • 将成功请求写入 SQLite 数据库: 方便后续分析。

二、如何部署 oha?

oha 的部署方式非常多样,总有一款适合你:

1. Cargo 安装

如果你是 Rust 爱好者,可以直接使用 Cargo 安装:

cargo install oha
# 或者使用 rustls 功能:
cargo install --no-default-features --features rustls oha
# 或者使用 vsock 功能:
cargo install --features vsock oha

2. 其他安装方式

  • Arch Linux: pacman -S oha
  • macOS (Homebrew): brew install oha
  • Windows (winget): winget install hatoo.oha
  • Debian (Azlux's repository): 请参考原文说明。
  • X-CMD (Linux, macOS, Windows WSL/GitBash): x env use oha
  • 容器化: Docker 镜像也已就绪,随时待命!

3. PGO 优化

如果你追求极致性能,可以使用 PGO (Profile-Guided Optimization) 进行构建:

bun run pgo.js

三、如何使用 oha?

oha 的使用非常简单,只需一条命令即可开始测试:

oha [OPTIONS] <URL>

1. 常用选项

  • -n <N_REQUESTS>: 请求数量 (默认: 200)
  • -c <N_CONNECTIONS>: 并发连接数 (默认: 50)
  • -p <N_HTTP2_PARALLEL>: HTTP/2 并行请求数 (默认: 1)
  • -z <DURATION>: 测试持续时间 (例如: -z 10s, -z 3m)
  • -q <QUERY_PER_SECOND>: 每秒请求数 (QPS)
  • --burst-delay <BURST_DURATION>: 突发请求之间的延迟
  • --burst-rate <BURST_REQUESTS>: 突发请求的速率 (默认: 1)
  • --rand-regex-url: 使用正则表达式生成 URL
  • --urls-from-file: 从文件读取 URL
  • --latency-correction: 延迟校正,避免协同省略
  • --no-tui: 禁用实时 TUI
  • -j, --json: 以 JSON 格式输出结果
  • -m, --method <METHOD>: HTTP 方法 (例如: -m POST) (默认: GET)
  • -H <HEADERS>: 自定义 HTTP 头 (例如: -H "foo: bar")
  • -t <TIMEOUT>: 请求超时时间
  • -d <BODY_STRING>: HTTP 请求体
  • -D <BODY_PATH>: 从文件读取 HTTP 请求体
  • -T <CONTENT_TYPE>: Content-Type 头
  • -a <BASIC_AUTH>: 基本认证或 AWS 凭证
  • --aws-session <AWS_SESSION>: AWS 会话令牌
  • --aws-sigv4 <AWS_SIGV4>: AWS SigV4 签名参数
  • -x <PROXY>: HTTP 代理
  • --proxy-http-version <PROXY_HTTP_VERSION>: 连接代理的 HTTP 版本
  • --proxy-http2: 使用 HTTP/2 连接代理
  • --http-version <HTTP_VERSION>: HTTP 版本
  • --http2: 使用 HTTP/2
  • --host <HOST>: HTTP Host 头
  • --disable-compression: 禁用压缩
  • -r, --redirect <REDIRECT>: 重定向次数限制 (默认: 10)
  • --disable-keepalive: 禁用 keep-alive
  • --no-pre-lookup: 不预先进行 DNS 查询
  • --ipv6: 仅查询 IPv6
  • --ipv4: 仅查询 IPv4
  • --insecure: 接受无效证书
  • --connect-to <CONNECT_TO>: 覆盖 DNS 解析和默认端口
  • --disable-color: 禁用彩色输出
  • --unix-socket <UNIX_SOCKET>: 连接到 Unix 套接字
  • --stats-success-breakdown: 统计成功和不成功请求的分布
  • --db-url <DB_URL>: 将成功请求写入 SQLite 数据库
  • --debug: 执行单个请求并输出请求和响应

2. 真实压力测试小贴士

  • 使用 --disable-keepalive 模拟用户不使用 keep-alive 连接的情况。
  • 使用 --latency-correction 避免协同省略问题。
  • 结合 -z 或 -n、-c 和 -q 模拟真实负载。

总而言之,oha 是一个强大、易用且高效的 HTTP 负载生成器,无论你是开发人员、测试人员还是运维人员,它都能成为你得力的助手。快来试试吧,让你的 HTTP 请求“飞”起来!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/484.html

分享给朋友:

“告别“慢吞吞”:用 oha 让你的 HTTP 请求“飞”起来!” 的相关文章

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上...

我的VIM配置

写一篇关于VIM配置的文章,记录下自己的VIM配置,力求简洁实用。VIM的配置保存在文件~/.vimrc中(Windows下是C:\Users\yourname \_vimrc)。VIM除了自身可配置项外,还可插件扩展。VIM的插件一般用vundle或vim-plug来管理,但我力求简单,不打算装太...

K8S NFS 共享存储

NFS 共享存储前面我们学习了 hostPath 与 Local PV 两种本地存储方式,但是平时我们的应用更多的是无状态服务,可能会同时发布在不同的节点上,这个时候本地存储就不适用了,往往就需要使用到共享存储了,比如最简单常用的网络共享存储 NFS,本节课我们就来介绍下如何在 Kubernetes...

html5+css3做的响应式企业网站前端源码

大家好,今天给大家介绍一款,html5+css3做的响应式企业网站前端源码 (图1)。送给大家哦,获取方式在本文末尾。首页banner幻灯片切换特效(图2)首页布局简约合理(图3)关于我们页面(图4)商品列表(图5)商品详情(图6)服务介绍(图7)新闻列表(图8)联系我们(图9)源码完整,需要的朋友...

el-table内容\n换行解决办法

问题请求到的数据带有换行符 '\n'但页面展示时不换行statusRemark: "\"1、按期完成计划且准确率100%,得100分;\n2、各项目每延误1天,扣1分;每失误1次或者员工投诉1次,扣3分,失误层面达到公司级影响较大的,该项绩效分数为0\"\n&...

全新斯柯达柯珞克Karoq深度评测:大众替代品

“斯柯达柯珞克是一款出色的全能家庭 SUV,具有许多有用的功能”价格36,605 英镑- 49,190 英镑优点方便的 VarioFlex 后排座椅非常适合家庭入住驾驶乐趣缺点保修期短保守的内饰性格比Yeti少结论——斯柯达柯珞克是一辆好车吗?斯柯达柯珞克是在辉煌的七座 斯柯达柯迪亚克之后推出的,因...