oha:一款轻量级HTTP负载测试工具

发布于:2025-09-01 ⋅ 阅读:(16) ⋅ 点赞:(0)

引言

在Web开发和运维工作中,我们经常需要对网站或API进行压力测试,以评估其在高并发情况下的性能表现。oha是一款用Rust编写的轻量级HTTP负载测试工具,它简单易用、功能强大,并且提供了直观的实时测试界面。

一、oha简介

oha(Ohayou)是一个受rakyll/hey启发的HTTP负载生成器,具有以下特点:

  • 使用Rust语言编写,性能优异
  • 支持实时TUI动画展示测试过程
  • 支持HTTP/1.1、HTTP/2和HTTP/3
  • 跨平台支持(Linux、macOS、Windows)
  • 提供多种输出格式(文本、JSON、CSV)
    在这里插入图片描述

二、安装方法

2.1 Windows系统安装

winget install hatoo.oha

安装完成后,在命令提示符或PowerShell中输入oha --version验证安装是否成功。

2.2 macOS系统安装

brew install oha

安装完成后,在终端中输入oha --version进行验证。

2.3 Linux系统安装

Ubuntu/Debian系统
echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ stable main" | sudo tee /etc/apt/sources.list.d/azlux.list
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg https://azlux.fr/repo.gpg
sudo apt update
sudo apt install oha
Arch Linux系统
sudo pacman -S oha

2.4 通过Rust Cargo安装

cargo install oha

2.5 下载预编译二进制文件

对于无法使用包管理器的系统,可以直接从GitHub Releases页面下载预编译的二进制文件:

  1. 访问:https://github.com/hatoo/oha/releases
  2. 根据你的系统架构下载对应版本
  3. 解压后将二进制文件放到系统PATH路径中

三、基本使用方法

3.1 最简单的测试

oha最基本的使用方式是指定目标URL:

oha https://www.baidu.com

默认参数(200个请求,50个并发连接)对目标URL进行测试。
在这里插入图片描述

3.2 常用参数说明

  • -n:指定总请求数
  • -c:指定并发连接数
  • -z:指定测试持续时间
  • -q:限制每秒请求数(QPS)
  • -m:指定HTTP方法
  • -H:添加自定义HTTP头
  • -d:指定请求体数据
  • -T:指定Content-Type
  • --no-tui:禁用实时界面
  • -o:指定输出文件
  • --output-format:指定输出格式

3.3 实用示例

示例1:指定并发连接数和请求数
oha -n 500 -c 100 https://www.baidu.com

发送500个请求,使用100个并发连接。
在这里插入图片描述

示例2:按时间进行测试
oha -c 50 -z 30s https://www.baidu.com

使用50个并发连接,持续测试30秒。

示例3:限制请求速率
oha -q 20 -c 10 https://www.baidu.com

限制每秒最多发送20个请求,使用10个并发连接。

示例4:POST请求测试
oha -m POST -H "Content-Type: application/json" -d '{"key": "value"}' https://httpbin.org/post

发送一个POST请求,包含JSON格式的请求体。

示例5:禁用实时界面并保存结果
oha --no-tui -o result.json --output-format json -c 50 -n 200 https://www.baidu.com

禁用实时界面,并将测试结果以JSON格式保存到result.json文件中。

四、高级功能

4.1 动态URL测试

oha支持使用正则表达式生成动态URL,适用于测试带有随机参数的接口:

oha --rand-regex-url http://httpbin.org/get/[a-z][0-9]{3}

生成类似http://httpbin.org/get/a123的随机URL进行测试。

4.2 从文件读取URL列表

当需要测试多个不同的URL时,可以将URL列表保存到文件中:

# urls.txt文件内容
https://www.baidu.com
https://www.google.com
https://www.bing.com

oha --urls-from-file urls.txt

4.3 Burst模式测试

Burst模式可以模拟突发流量,例如每5秒发送10个请求:

oha -n 30 --burst-delay 5s --burst-rate 10 https://www.baidu.com

4.4 不显示花里胡哨的界面,只看结果

oha --no-tui https://www.baidu.com

五、测试结果解读

oha测试完成后会显示详细的统计信息,主要关注以下几个指标:

5.1 关键指标说明

  • Total requests:总请求数
  • Total duration:总测试时间
  • Requests per second:每秒请求数(QPS)
  • Fastest request:最快响应时间
  • Slowest request:最慢响应时间
  • Average request time:平均响应时间
  • Status code distribution:HTTP状态码分布

5.2 性能分析建议

  1. 响应时间分析:关注平均响应时间和P95/P99响应时间,这些指标反映了用户体验
  2. 吞吐量分析:QPS越高说明系统处理能力越强
  3. 错误率分析:关注非200状态码的比例,错误率过高说明系统存在问题
  4. 资源利用率:结合服务器CPU、内存使用率进行综合分析