什么是 Vegeta
Vegeta 是一个用 Go 语言编写的多功能的 HTTP 负载测试工具,它提供了命令行工具和一个开发库。
官方地址:https://github.com/tsenart/vegeta
安装 Vegeta
Vegeta 安装非常简单,由于 Go 语言良好的跨平台性,可以直接下载官方的预编译版本后开箱即用。
预编译版本
这里以 Linux 版本为例:
如果你使用的是其它平台,可根据实际情况在官网下载页面下载对应版本解压后就可以使用。
macOS
Vegeta 用法
Vegeta 使用实例
使用标准输入进行压测并生成报告
使用目标文件的内容进行压测
创建 target.txt 文件,内容如下:
使用 Vegeta 进行压测
自定义目标文件
除了前面定义的最简单 请求外,你还可以定义下面这些更灵活更复杂的 HTTP 请求:
1. 自定义请求头
2. 自定义请求的主体
3. 自定义请求头和请求主体
生成压测报告
生成 JSON 格式的压测报告
生成基于 Dygraphs 的 HTML 5 压测报告
计算并输出一个基于文本的直方图
生成实时图形压测报告
如果您是 iTerm 用户,可以使用 jaggr 将 Vegeta 与 jplot 整合在一起并在终端上实时绘制压测报告。要实现这个功能你首先需要先安装 jaggr 和 jplot:
1. 安装 jaggr
2. 安装 jplot
安装完 jaggr 和 jplot 后,其次你需要在 iTerm 中执行以下命令:
分布式压力测试
当进行大规模负载测试时,通常由于受限于 Vegeta 自身机器的性能瓶颈(比如:打开的文件数,内存大小,CPU 和 网络带宽)限制而无法达到预期结果。 这时分布式的使用 Vegeta 可以很好的解决这个问题,实现类似功能的工具很多,比如功能强大的 Ansible。这里我们使用 Pdsh 来实现:
Pdsh 的全称是 (Parallel Distributed Shell),Pdsh 可并行的执行对目标主机的操作,很方便的批量执行命令和分发任务。Pdsh 还支持交互模式,当要执行的命令不确定时,可直接进入 Pdsh命令行,非常方便。
完成前面的命令后,我们就可以通过 Shell 脚本将结果文件收集到的一起供后面生成报表时使用。
最后我们可以通过 命令生成此次压测的报表。 命令可一次性读取使用逗号分隔的多个结果文件并生成报告,默认通过时间戳进行排序。
其它相关
如果你觉得命令行下使用 Vegeta 比较复杂的话,你还可以使用 Alex 项目。Alex 是一个基于 Vegeta Library 和 Boom 封装的压力测试 Web UI,Vegeta 提供稳定的 QPS 压力源,Boom 提供稳定的并发数压力源。
项目地址:https://github.com/ireaderlab/alex
Alex 架构图
Alex 效果图
参考文档
http://www.google.com
http://t.cn/RBqHjIu
http://t.cn/zQ104Zp
http://t.cn/R5spIPf
今日思想
每个人都受两种教育,一种来自别人,另一种更重要的是来自自己。
—— 爱德华·吉本
领取专属 10元无门槛券
私享最新 技术干货