news 2026/7/10 13:19:48

Vegeta HTTP 负载测试工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vegeta HTTP 负载测试工具

Go接口压测的第三方包,一个很好用的负载测试工具。vegeta测试工具组件(可执行文件)支持linux以及mac系统,这里指的是通过终端命令行进行进行测试,不需要从代码层面使用这个工具的时候支持linux以及mac系统,在windows上可能会出现问题。但是通过vegeta包代码执行的时候是可以在多平台执行的,但是在数据的展示上会有局限性,当然也可能是博主本人不会用没有找到对应的使用方式。

比如测试工具组件执行完命令后可以在终端控制台很直观的看到Histogram图,但是在代码层面测试后就很难分析出Histogram的情况

下面贴一下代码层面的吧,至于组件的方式大家百度一下有很多详细的教程

http的形式

传参,用户验证参数

packagemainimport("encoding/base64""encoding/json""fmt"vegeta"github.com/tsenart/vegeta/lib""net/http""time")funcmain(){// 测试目标 URLtarget:="https://your.domain.name/"// 测试参数rate:=20// 每秒请求数duration:=1*time.Second// 测试时间// 请求体数据data:=map[string]string{"key1":"value1","key2":"value2",}body,_:=json.Marshal(&data)// Basic验证authString:="user:password"encodedAuthString:=base64.StdEncoding.EncodeToString([]byte(authString))headers:=http.Header{"Content-Type":[]string{"application/json"},"Authorization":[]string{"Basic "+encodedAuthString},}// 使用自定义transport创建attackerattacker:=vegeta.NewAttacker()// 创建 vegeta 目标targets:=[]vegeta.Target{{Method:"GET",URL:target,Header:headers,Body:body}}// 创建和执行 vegeta 测试results:=attacker.Attack(vegeta.NewStaticTargeter(targets...),vegeta.Rate{Freq:rate,Per:time.Second},duration,"Load Test")// 分析结果metrics:=&vegeta.Metrics{}forres:=rangeresults{metrics.Add(res)}metrics.Close()// 打印结果fmt.Printf("Requests: %d\n",metrics.Requests)fmt.Printf("成功率: %.2f%%\n",metrics.Success*100)fmt.Printf("最大延迟: %s\n",metrics.Latencies.Max)fmt.Printf("平均延迟: %s\n",metrics.Latencies.Mean)fmt.Printf("P95 延迟: %s\n",metrics.Latencies.P95)fmt.Printf("P99 延迟: %s\n",metrics.Latencies.P99)fmt.Printf("QPS: %.2f\n",metrics.Rate)}

Https的形式

传参,用户验证参数,跨过证书验证

packagemainimport("crypto/tls""encoding/base64""encoding/json""fmt"vegeta"github.com/tsenart/vegeta/lib""net/http""time")funcmain(){// 测试目标 URLtarget:="https://your.domain.name/"// 测试参数rate:=20// 每秒请求数duration:=1*time.Second// 测试时间// 请求体数据data:=map[string]string{"key1":"value1","key2":"value2",}body,_:=json.Marshal(&data)// Basic验证authString:="user:password"encodedAuthString:=base64.StdEncoding.EncodeToString([]byte(authString))headers:=http.Header{"Content-Type":[]string{"application/json"},"Authorization":[]string{"Basic "+encodedAuthString},}// 创建http.Transport以跳过证书验证transport:=&http.Transport{TLSClientConfig:&tls.Config{InsecureSkipVerify:true},}// 使用自定义transport创建attackerattacker:=vegeta.NewAttacker(vegeta.Client(&http.Client{Transport:transport}))// 创建 vegeta 目标targets:=[]vegeta.Target{{Method:"GET",URL:target,Header:headers,Body:body}}// 创建和执行 vegeta 测试results:=attacker.Attack(vegeta.NewStaticTargeter(targets...),vegeta.Rate{Freq:rate,Per:time.Second},duration,"Load Test")// 分析结果metrics:=&vegeta.Metrics{}forres:=rangeresults{metrics.Add(res)}metrics.Close()// 打印结果fmt.Printf("Requests: %d\n",metrics.Requests)fmt.Printf("成功率: %.2f%%\n",metrics.Success*100)fmt.Printf("最大延迟: %s\n",metrics.Latencies.Max)fmt.Printf("平均延迟: %s\n",metrics.Latencies.Mean)fmt.Printf("P95 延迟: %s\n",metrics.Latencies.P95)fmt.Printf("P99 延迟: %s\n",metrics.Latencies.P99)fmt.Printf("QPS: %.2f\n",metrics.Rate)}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 13:19:25

Navicat无限试用终极指南:3种强力方案解决Mac版试用期限制

Navicat无限试用终极指南:3种强力方案解决Mac版试用期限制 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为…

作者头像 李华
网站建设 2026/7/10 13:18:01

C# WinForm俄罗斯方块项目解析:从核心逻辑到界面实现

1. 项目概述:从经典游戏到编程实践 俄罗斯方块,这个诞生于上世纪80年代的经典游戏,几乎成了每个程序员在入门图形界面编程时都会尝试实现的“Hello World”项目。但别小看它,一个完整的俄罗斯方块项目,麻雀虽小五脏俱全…

作者头像 李华
网站建设 2026/7/10 13:15:10

5分钟掌握ModTheSpire:杀戮尖塔模组加载器终极指南

5分钟掌握ModTheSpire:杀戮尖塔模组加载器终极指南 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire ModTheSpire是一款专为《杀戮尖塔》设计的开源模组加载器,让…

作者头像 李华
网站建设 2026/7/10 13:14:41

抖音批量下载工具:轻松保存无水印视频与音乐的终极方案

抖音批量下载工具:轻松保存无水印视频与音乐的终极方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…

作者头像 李华
网站建设 2026/7/10 13:10:55

YaeAchievement:原神成就数据导出与UIAF格式转换终极指南

YaeAchievement:原神成就数据导出与UIAF格式转换终极指南 【免费下载链接】YaeAchievement 更快、更准的原神数据导出工具 项目地址: https://gitcode.com/gh_mirrors/ya/YaeAchievement 想要轻松备份和管理你的原神成就数据吗?YaeAchievement是一…

作者头像 李华