推荐一款高性能 HTTP 负载测试工具 Vegeta

什么是 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

今日思想

每个人都受两种教育,一种来自别人,另一种更重要的是来自自己。

—— 爱德华·吉本

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612G188AM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券