首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go每日一库之156:hey(HTTP压测 )

Go每日一库之156:hey(HTTP压测 )

作者头像
luckpunk
发布于 2023-10-02 00:17:50
发布于 2023-10-02 00:17:50
65800
代码可运行
举报
运行总次数:0
代码可运行

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get -u github.com/rakyll/hey
go install github.com/rakyll/hey

参数说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Usage: hey [options...] <url>

Options:
-n 要运行的请求数。默认是200-c 并发运行的请求数。请求的总数不能小于并发级别。默认是50-q 速率限制,以每秒查询(QPS)为单位。默认没有限制。

-z 发送请求的应用程序配置。当时间到了,应用程序停止并退出。如果指定持续时间,则忽略n。
    例子:- z 10s - z 3m。

-o 输出类型。如果没有提供,则打印摘要。“csv”是唯一受支持的替代方案。转储文件的响应以逗号分隔值格式的度量。
-m  HTTP method, one of GET, POST, PUT, DELETE, HEAD, OPTIONS.
-H 自定义HTTP头。您可以通过重复标记指定所需的数量
    For example, -H "Accept: text/html" -H "Content-Type: application/xml"
-t 每个请求的超时时间(以秒为单位)。默认值是20,使用0表示无穷大。
-A  HTTP Accept header.
-d  HTTP request body.
-D  HTTP request body from file. For example, /home/user/file.txt or ./file.txt.
-T  Content-type, defaults to "text/html".
-a  Basic authentication, username:password.
-x  HTTP Proxy address as host:port.
-h2 Enable HTTP/2.

-host   HTTP Host header.

-disable-compression  禁用压缩。
-disable-keepalive    禁用keep-alive,防止重用TCP不同HTTP请求之间的连接。
-disable-redirects   禁用HTTP重定向的后续操作
-cpus        使用的cpu核数。(当前机器默认为48)

hey -n 10 -c 2 -m POST -T "application/x-www-form-urlencoded" -d 'username=1&message=hello' http://your-rest-url/resource

结果解读

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[sre@ecs-xxx ~]# hey -n 2000 -c 50  https://www.baidu.com/

Summary:
  // 总运行时长
  Total:    0.5153 secs
  Slowest:  0.0770 secs
  Fastest:  0.0067 secs
  // 平均响应时间
  Average:  0.0097 secs
  // 每秒响应数(QBS)
  Requests/sec: 3880.9152

  Total data:   454000 bytes
  Size/request: 227 bytes

// 响应直方图
Response time histogram:
  0.007 [1] |
  // 响应时长在0.007~0.014区间的请求总数为1940个
  0.014 [1940]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.021 [4] |
  0.028 [0] |
  0.035 [0] |
  0.042 [1] |
  0.049 [0] |
  0.056 [5] |
  0.063 [26]|0.070 [22]|
  0.077 [1] |

// http请求时延分布
Latency distribution:
  10% in 0.0073 secs
  25% in 0.0077 secs
  50% in 0.0081 secs
  75% in 0.0088 secs
  90% in 0.0093 secs
  95% in 0.0106 secs
  // TP99:满足百分之九十九的网络请求所需要的最低耗时
  99% in 0.0634 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0010 secs, 0.0067 secs, 0.0770 secs
  DNS-lookup:   0.0001 secs, 0.0000 secs, 0.0076 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0008 secs
  resp wait:    0.0083 secs, 0.0066 secs, 0.0769 secs
  resp read:    0.0001 secs, 0.0000 secs, 0.0029 secs
// http状态码分布
Status code distribution:
  [200] 2000 responses

测试例子

  • 指定时长的get请求:客户端(-c)并发为2, 持续发送请求2s (-c)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hey -z 5s -c 2 https://www.baidu.com/
  • 指定请求总数的get请求:运行2000次(-n),客户端并发为50(-c)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hey -n 2000 -c 50  https://www.baidu.com/
  • 指定host的get请求:使用的cpu核数为2 (-cpus), 压测时长为5s(-z), 并发数为2
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hey -z 5s -c 2 -cpus 2 -host "baidu.com" https://220.181.38.148
  • 请求带header的get接口:压测时长为5s (-z), 客户端发送请求的速度为128QPS, 请求头用-H添加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hey -z 5s -q 128 -H "client-ip:0.0.0.0" -H "X-Up-Calling-Line-Id:X.L.Xia"
https://www.baidu.com/
  • 请求post请求
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hey -z 5s -c 50 -m POST -H "info:firstname=xiuli; familyname=xia" -d "year=2020&month=1&day=21"
https://www.baidu.com/
  • 代理模式,需额外配置proxy:因部分ip频繁发请求有风险,故可用-x设置白名单代理向服务器发请求
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hey -z 5s -c 10 -x "http://127.0.0.1:8001" http://baidu.com/
  • shell for循环实现压测
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in `seq 10`; do curl -v http://baidu.com; done
  • 指定请求总数的get请求:运行2000次(-n),客户端并发为50(-c)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hey -n 2000 -c 50  http://192.168.21.224:8833/login
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
开源HTTP压力测试工具hey
hey是一款使用Golang开发的HTTP压力测试工具,可作为ApacheBench (ab)替代品,在文章中《socat与Brook 端口转发非权威对比测试,到底孰强孰弱?》有提到hey这个工具,这篇文章来详细说明下hey的安装和使用。
星哥玩云
2022/08/13
1.5K0
开源HTTP压力测试工具hey
HTTP压力测试工具hey 开源
hey是一款使用Golang开发的HTTP压力测试工具,可作为ApacheBench替代品,这篇文章来详细说明下hey的安装和使用。
张旭博客
2022/12/27
1.7K0
HTTP压力测试工具hey 开源
Nginx 流量镜像使用技巧
最近我在研究 Nginx 1.13.4 最新的 mirror 模块,利用 mirror 模块,你可以将线上实时流量拷贝至其他环境同时不影响源站请求的响应,因为 Nginx 会丢弃 mirror 的响应。mirror 模块可用于以下几个场景:
米开朗基杨
2019/08/29
13.1K0
Nginx 流量镜像使用技巧
socat与Brook 端口转发非权威对比测试,到底孰强孰弱?
常见的端口转发程序有socat、Brook、nginx、rinetd、iptables等,大部分已经在博客做过介绍,有兴趣的同学可参考我之前的文章。
星哥玩云
2022/08/13
1.5K0
socat与Brook 端口转发非权威对比测试,到底孰强孰弱?
还在用 Jmeter 做压测?试试 oha 吧!你会毫不犹豫的爱上它!
在进行 Web 服务和 API 性能测试时,选择合适的工具至关重要。市面上有很多工具可以帮助开发者进行负载测试,其中 OHA 和 JMeter 是两个常见的选择。
南山竹
2025/06/05
1030
还在用 Jmeter 做压测?试试 oha 吧!你会毫不犹豫的爱上它!
开源项目|1000行代码实现http_bench
http_bench是HTTP(HTTP/1, HTTP/2, HTTP/3, Websocket)压测工具,并支持单机和分布式,为了简洁,直接用1000行左右实现。有兴趣读源码朋友,可以点击【阅读原文】或者访问【开源地址】(当前项目已经接入Github Actions,适配了golang1.18,golang1.19,golang1.20)。
用户1904552
2023/04/17
2110
开源项目|1000行代码实现http_bench
Linux压测工具(http_load,webbench,ab,siege)
程序非常小,解压后也不到100K http_load以并行重复的方式运行,并测试Web服务器的量子与负载。但是它大部分压力测试工具,它可以以一个单一的进程运行,一般不会把损坏搞死。还可以测试HTTPS类的网站请求。
全栈程序员站长
2021/06/10
2.1K0
Go每日一库之183:vegeta(http压力测试工具库)
vegeta工具主要有4个子命令组成,分别是attack、encode、report、plot。
luckpunk
2025/01/03
2440
go实现的压测工具【单台机器100w连接压测实战】
本文介绍压测是什么,解释压测的专属名词,教大家如何压测。介绍市面上的常见压测工具(ab、locust、Jmeter、go实现的压测工具、云压测),对比这些压测工具,教大家如何选择一款适合自己的压测工具,本文还有两个压测实战项目:
link1st
2019/09/20
11.1K0
go实现的压测工具【单台机器100w连接压测实战】
Web服务压测神器wrk
wrk是一款开源的高性能http压测工具(也支持https),非常小巧,可以执行文件只有3M(其中主要是luajit和openssl占用绝大多数空间),别看核心代码3-5年没更新了,但依旧非常好用。虽然很早之前我就知道有这么个工具了,当时学习这个工具的时候我还拿它压测了我们的个人网站xindoo.me,发现mysql性能不行后加了wp-cache,通过cache把我网站的承载能力提升了10多倍。但当时之前简单使用它的初级功能,最近工作中恰好有个http服务需要压测,然后就拿wrk做了。这次使用了wrk lua高级功能实现了压测,我们找到了我们服务的瓶颈,同时也被wrk的超高性能所震惊。
xindoo
2021/01/21
3.1K0
HTTP入门
URL 的作用是能让你访问一个页面,HTTP 的作用是让你能下载这个页面,HTML 的作用是让你能看懂这个页面。
小小范
2021/12/08
4960
HTTP入门
K8s 多集群编排平台 Karmada 入门
Karmada(Kubernetes Armada)是 CNCF 孵化的一个 Kubernetes 管理系统,使您能够在多个 Kubernetes 集群和云中运行云原生应用程序,而无需更改应用程序。通过使用 Kubernetes 原生 API 并提供先进的调度功能,Karmada 实现了真正的开放式、多云 Kubernetes。
我是阳明
2024/06/03
2K0
K8s 多集群编排平台 Karmada 入门
HTTP基准压测工具wrk使用指南
wrk是一个开源的、热门的、现代的单机HTTP基准测试工具,目前在github开源平台累计了26.9k的star数目,足以可见wrk在Http基准测试领域的热门程度。它结合了多线程设计和可扩展的事件通知系统,如epoll和kqueue,可以在有限的资源下并发出极致的的负载请求。并且内置了一个可选的LuaJIT脚本执行引擎,可以处理复杂的HTTP请求生成、响应处理以及自定义压测报告。
kl博主
2023/11/18
7840
Go每日一库之157:tproxy (TCP连接代理与分析 )
复杂网络情况的处理从来都是后端开发的重点和难点之一,你是不是也为各种网络情况的调试而头顶发凉呢?
luckpunk
2023/10/02
6720
Go每日一库之157:tproxy (TCP连接代理与分析 )
ab(Apache Bench)命令详解以及压力测试模拟(转)
ApacheBench 是 Apache服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。
wuweixiang
2019/03/12
2.5K0
网站压力测试工具 - Hey
本文最先发布在:https://www.itcoder.tech/posts/golang-rakyll-hey/
雪梦科技
2020/05/25
4.1K0
网站压力测试工具 - Hey
常用的HTTP服务压测工具介绍
在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好的匹配项目的实际需求,节约资源成本。
luckpunk
2023/09/10
1.1K0
聊聊如何利用wrk进行压测初探
wrk 是一个能够在单个多核 CPU 上产生显著负载的现代 HTTP 基准测试工具。它采用了多线程设计,并使用了像 epoll 和 kqueue 这样的可扩展事件通知机制。此外,用户可以指定 LuaJIT 脚本来完成 HTTP 请求生成、响应处理和自定义报告等功能。
lyb-geek
2023/07/25
6050
聊聊如何利用wrk进行压测初探
聊聊如何利用wrk进行压测初探
wrk 是一个能够在单个多核 CPU 上产生显著负载的现代 HTTP 基准测试工具。它采用了多线程设计,并使用了像 epoll 和 kqueue 这样的可扩展事件通知机制。此外,用户可以指定 LuaJIT 脚本来完成 HTTP 请求生成、响应处理和自定义报告等功能。
lyb-geek
2023/09/05
5030
聊聊如何利用wrk进行压测初探
「Go开源」vegeta: http压力测试工具库
vegeta工具主要有4个子命令组成,分别是attack、encode、report、plot。
Go学堂
2023/08/29
8590
「Go开源」vegeta: http压力测试工具库
相关推荐
开源HTTP压力测试工具hey
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验