Go每日一库之 vegeta — http压力测试工具库
今天给大家推荐的是一个对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个子命令组成,分别是attack、encode、report、plot。
- 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