您当前的位置:首页 > 电脑百科 > 站长技术 > 网站

你的站点抗压么?推荐一款超方便的开源压测工具

时间:2021-07-23 10:55:09  来源:  作者:HelloGitHub
你的站点抗压么?推荐一款超方便的开源压测工具

 

这里是 HelloGitHub 推出的《讲解开源项目》系列,本期介绍一款标星 17.7k 纯 Go 语言实现的 HTTP(S) 压测工具——vegeta

项目地址:
https://github.com/tsenart/vegeta

Vegeta 是一款用 Go 语言编写的多功能 HTTP(S) 压测工具:安装方便、功能齐全、使用简单,还可作为命令行工具或者开发库进行使用。它不仅提供了常见的压测功能,还支持格式化结果并输出为图表或动态显示当前结果。

你的站点抗压么?推荐一款超方便的开源压测工具

 

通过本文你将掌握这款强大压测工具的基本用法,让压测只需一条命令!

一、 安装

从仓库下载编译好的二进制文件:

https://github.com/tsenart/vegeta/releases

PC 上下载 amd64 版本即可,在 mac Os X 上使用 Homebrew 安装:

$ brew update && brew install vegeta

如果你会 Go 语言,使用 get 自动安装:

$ go get -u github.com/tsenart/vegeta

如提示找不到指令,请确保 go 以及 GOBIN 在您的环境变量中

二、快速入门

以下指令均可以在 linux 下运行

对于下载编译好的用户建议先将 vegeta 临时添加到 PATH 路径,方便使用:

$ cd vegeta
$ export PATH=$pwd:$PATH

或者直接将 vegeta 放到 bin 目录下:

$ cd vegeta
$ sudo mv vegeta /usr/local/bin/

输入 vegeta -version 后可以显示证明安装成功。

首次使用可以使用:

$ vegeta --help

来查看支持的指令和相关例子。

1. 使用例子

在命令行输入:

$ echo "GET http://127.0.0.1:233"| vegeta attack -rate=500 -connections=1 -duration=1s | tee results.bin | vegeta report

将会得到如图所示的结果:

你的站点抗压么?推荐一款超方便的开源压测工具

 

这条指令前半部分的 echo "GET http://127.0.0.1:233" 表示想要测试的地址,这里我使用的是 Nginx 搭建的本地服务器,vegeta attack 代表测试指令,其后 -rate -connections -duration 分别表示每秒钟请求次数、每个地址最大连接数、持续时间。

攻击完成后使用 tee results.bin 保存测试报告并用 veteta report 显示报告内容。

vegeta report 也支持使用 文本、JSON、直方图、hdrplot 等:

$ echo "GET http://127.0.0.1:233"| vegeta attack -rate=500 -connections=1 -duration=5s > results.bin

文本(默认情况)

$ vegeta report results.bin
你的站点抗压么?推荐一款超方便的开源压测工具

 

直方图

$ vegeta report -type='hist[0,1ms,2ms,3ms,4ms]' results.bin
你的站点抗压么?推荐一款超方便的开源压测工具

 

JSON

$ vegeta report --type json results.bin
你的站点抗压么?推荐一款超方便的开源压测工具

 

hdrplot

$ vegeta report --type hdrplot results.bin
你的站点抗压么?推荐一款超方便的开源压测工具

 

2.生成图形

接上一小节的内容,我们将文字形式的报告转为图表显示,在命令行中输入:

$ vegeta plot --title HelloGitHub results.bin > plot.html

在浏览器中打开新生成的 plot.html,即可看到图形化的测试数据:

你的站点抗压么?推荐一款超方便的开源压测工具

 

其中 --title HelloGitHub 用来设置表头文字。此外还有

-cpu 用来设置默认使用的 cpu 核心数量,这里我默认是 12。可以使用 --threshold flag 设定下采样阈值。

vegeta plot 也可以将多个曲线放在一起,使用 vegeta plot result_1.bin result2_.bin ... result_n.bin > plot.html 即可

此外,配合 Go 下的 jaggr 和 jplot 可以实现动态画面输出,官方给出的指令和效果如下:

$ echo 'GET http://localhost:8080' | 
    vegeta attack -rate 5000 -duration 10m | vegeta encode | 
    jaggr @count=rps 
          hist[100,200,300,400,500]:code 
          p25,p50,p95:latency 
          sum:bytes_in 
          sum:bytes_out | 
    jplot rps+code.hist.100+code.hist.200+code.hist.300+code.hist.400+code.hist.500 
          latency.p95+latency.p50+latency.p25 
          bytes_in.sum+bytes_out.sum
你的站点抗压么?推荐一款超方便的开源压测工具

 

由于 jplot 需要 iTerm2 但笔者没有苹果系列的电脑所以关于动态输出部分的内容大家需要自己研究。

3.使用管道

如果您了解 Shell 的管道那就不难看出,前文代码中就是使用管道将 echo "GET http:// xxx" 的输出内容传给了 vegeta。通过管道,除了使用简单的 echo 工具,也可以使用其他任何程序的输出作为测试目标。

4.转换编码

vegeta 同样提供了编码转换功能,现在支持三种编码格式:Gob (二进制)、CSV 以及 JSON(默认) 使用 veget encode 可以做到这几种编码的相互转换:

$ echo "GET http://127.0.0.1:233"| vegeta attack -rate=500 -connections=1 -duration=1s > results.gob
$ cat results.gob | vegeta encode | jq .

可以显示转换为 JSON 格式的测试信息,或者:

$ cat results.gob | vegeta encode --to csv --output results.csv

输入格式的检测是自动完成的,不需要手动进行设置。

三、结语

到这里 vegeta 的基本使用到这里就结束了,它还支持一些精细参数的设置比如证书、密钥等,但限于篇幅和笔者知识水平限制无法扩展太多,大家可以根据需要的使用 vegeta [command] --help 指令进行查看,也可以阅读官方的使用手册

温馨提示:压测虽好玩但不要贪杯哦,别压起劲儿来把线上服务给压挂了!



Tags:开源压测工具   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
这里是 HelloGitHub 推出的《讲解开源项目》系列,本期介绍一款标星 17.7k 纯 Go 语言实现的 HTTP(S) 压测工具——vegeta项目地址: https://github.com/tsenart/ve...【详细内容】
2021-07-23  Tags: 开源压测工具  点击:(86)  评论:(0)  加入收藏
▌简易百科推荐
今天我们来聊一下北京地区的《ICP经营许可证》有多好办,现在的互联网上提供的商机越来越多,增值电信业务十分火爆,企业通过互联网突破地域的限制,把公司产品卖到更远的地方,同时...【详细内容】
2021-12-17  梦想理应飞翔Yy    Tags:《ICP经营许可证》   点击:(12)  评论:(0)  加入收藏
转自: https://blog.kermsite.com/p/blog-intro/由于格式问题,部分链接、表格可能会失效,若失效请访问原文此专题将详细介绍如何从零开始搭建一个个人博客。Dec 01, 2021阅读时...【详细内容】
2021-12-17  LaLiLi    Tags:个人博客   点击:(6)  评论:(0)  加入收藏
SP证是第二类增值电信业务经营许可证的简称。分为全网SP证和地网SP证。申请经营许可证是在工信部申请,全网SP经营许可证的有效期是5年,全网SP许可证在工信部办理全网SP续期,地...【详细内容】
2021-11-01  s陳述    Tags:sp证书   点击:(38)  评论:(0)  加入收藏
现在还有许多人不知道EDI许可证是什么东西今天我就来给大家讲解一下.EDI许可证就是一种增值电信业务经营许可证。是针对在线数据处理和交易处理业务需求的专业资格证书。 《...【详细内容】
2021-10-28  soberXx    Tags:edi许可证   点击:(75)  评论:(0)  加入收藏
元素的化学概念,如周期表中的化学元素,一切物质都是由元素构成的。对程序员而言,网站建设制作就是代码构成网站。企业网站设计者也收集了各种各样的元素,但并非所有元素都需要运...【详细内容】
2021-10-26  南宁云尚网络    Tags:企业网站   点击:(39)  评论:(0)  加入收藏
在运营网站的过程中,有一件不可忽略的事情。那就是网站上线之前需要完成 ICP 备案。说到这里,很多朋友就提出疑问了~· 什么是 ICP 备案呢?· ICP 备案需要哪些材...【详细内容】
2021-10-22  启测云    Tags:ICP备案   点击:(45)  评论:(0)  加入收藏
最近有朋友问我,我公司有外资就不能申请ICP许可证了么?外资的定义是什么?其实是可以的,但有一个特定条件必须满足,外资公司是指公司有外资股东,比如香港、加拿大、美国、韩国等等,...【详细内容】
2021-10-21  小白速看Z    Tags:ICP   点击:(51)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  我是FEIYA    Tags:https   点击:(44)  评论:(0)  加入收藏
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14    51CTO  Tags:Loki日志   点击:(97)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  小李子说程序    Tags:HTTPS证书   点击:(124)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条