Go每日一库之 vegeta — http压力测试工具库

发布时间 2023-08-24 21:38:27作者: 技术颜良

今天给大家推荐的是一个对HTTP接口做压力测试的工具:vegeta

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

一、特点

  • 命令行和Go第三方库都可以使用
  • 命令行使用UNIX风格设计
  • 可扩展多种压测报告形式
  • 对于分布式测试也非常简单易用
  • 易安装、易使用

二、安装

2.1 MacOS下安装

macos下使用brew即可安装,如下:

brew update && brew install vegeta

2.2 Arch Linux下安装

pacman -S vegeta

2.3 FreeBSD下安装

pkg install vegeta

2.4 自行编译

git clone https://github.com/tsenart/vegeta
cd vegeta
make vegeta
mv vegeta ~/bin # Or elsewhere, up to you.

三、使用教程

vegeta工具主要有4个子命令组成,分别是attackencodereportplot

  • attack子命令:该子命令主要设置和要压测的接口请求有关。比如要压测的接口地址、接口的body参数、接口的header头、并发的请求数量、压测的时间、压测的速率等等。
  • encode子命令:该子命令主要是指定压测结果输出的位置以及输出的格式。比如以csv格式输出还是以json格式输出,输出到哪个文件。
  • report子命令:该子命令主要是针对压测结果生成统计报告。
  • plot子命令: 该子命令的功能主要是将测试结果以图表的形式进行展示。

3.1 指定压测的接口地址

在指定压测地址时有两种方式:通过标准的stdin和指定具体的文件。

  • 通过stdin指定压测地址
echo "GET https://www.baidu.com" | vegeta attack -duration=5s

如上所示,通过管道的方式将要压测的接口地址输出给vegeta的attack命令。这里需要注意,在指定压测接口时,一定要指定请求的方法,同时请求方法必须都是大写。例如GET、POST。而Get或Post则是无效的方法。

  • 通过targets参数指定文件

通过文件可以指定一个或多个要压测的url地址。指定格式如下:

GET https://foo.bar/a/b/c
Header-X: 123
Header-Y: 321

POST https://foo.bar/b/c/a