Vegeta HTTP 负载测试工具
Go接口压测的第三方包,一个很好用的负载测试工具。vegeta测试工具组件(可执行文件)支持linux以及mac系统,这里指的是通过终端命令行进行进行测试,不需要从代码层面使用这个工具的时候支持linux以及mac系统,在windows上可能会出现问题。但是通过vegeta包代码执行的时候是可以在多平台执行的,但是在数据的展示上会有局限性,当然也可能是博主本人不会用没有找到对应的使用方式。
比如测试工具组件执行完命令后可以在终端控制台很直观的看到Histogram图,但是在代码层面测试后就很难分析出Histogram的情况
下面贴一下代码层面的吧,至于组件的方式大家百度一下有很多详细的教程
http的形式
传参,用户验证参数
package main
import (
"encoding/base64"
"encoding/json"
"fmt"
vegeta "github.com/tsenart/vegeta/lib"
"net/http"
"time"
)
func main() {
// 测试目标 URL
target := "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创建attacker
attacker := 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{}
for res := range results {
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的形式
传参,用户验证参数,跨过证书验证
package main
import (
"crypto/tls"
"encoding/base64"
"encoding/json"
"fmt"
vegeta "github.com/tsenart/vegeta/lib"
"net/http"
"time"
)
func main() {
// 测试目标 URL
target := "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创建attacker
attacker := 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{}
for res := range results {
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)
}
Vegeta HTTP 负载测试工具的更多相关文章
- 开源负载测试工具k6比JMeter更容易的5件事
k6是GitHub上提供的开源负载测试工具.它是用Go编写的,并运行用JavaScript编写的测试脚本.它受到了开发人员,测试人员和DevOps团队的强烈兴趣,并拥有超过4400名GitHub明星. ...
- HTTP/HLS/RTMP超级负载测试工具
这个负载测试工具是网游分享的工具,可以在http://blog.csdn.net/win_lin/article/details/11835011 或者https://github.com/winli ...
- Locust分布式负载测试工具入门
忽略元数据末尾 回到原数据开始处 Locust简介 Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试. 以下是github上的仓库地址 https://github.co ...
- HTTP/HLS/RTMP超级负载测试工具(转)
这个负载测试工具是网游分享的工具,可以在http://blog.csdn.net/win_lin/article/details/11835011 或者https://github.com/winli ...
- loadrunner(预测系统行为和性能的负载测试工具)
LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试.企业使用LoadRu ...
- Apache JMeter开源压力测试/负载测试工具 2.12 官方最新版
软件介绍 Jmeter是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试),而且用Jmeter 来测试 Restful API, 非常好用. 如何学 ...
- 网站压力负载测试工具:Web版已逝,只好送大伙单机版
前言: 最近老板资金周转出了点问题,工资好久没发了,于是暂闲置在家,静待老板弄到钱东山再起的消息: QQ群里,偶尔不时的会有人问,原来的分布式网站负载工具怎么下载不了啦?或者不能用啦?之类的问题. 我 ...
- 系统负载测试工具-LoadRunner
LoadRunner的主要作用是对系统压力测试进行分析 与之相类似的工具是:badboy:录制脚本工具+jmeter:分析结果工具
- apache 负载测试工具 ab
1.ab工具是apache自带的工具,可以测试服务器的负载能力 2.ab工具的参数 -v:版本 -c:并发数 -n:请求数 -t: 测试所进行的最大秒数 3.例子:ab -c 100 -n 100 - ...
- Web性能和负载测试工具补充
压力测试文档:https://yq.aliyun.com/articles/377543https://www.cnblogs.com/ahjxxy/archive/2012/09/17/268899 ...
随机推荐
- python 爬虫基本玩法,统计杭电oj题目正确率并排序
python爬虫主要用两个库:Urllib和BeautifulSoup4.一个用来爬取网页,一个用来解析网页. Urllib是Python内置的HTTP请求库,它包含四个模块: 1.request,最 ...
- confd+Nacos实现nginx配置文件管理
场景: 由于公司内部站点保护的需求, 将部分的站点添加白名单, 这边的操作是在nginx配置文件中添加如下代码 allow 127.0.0.1: deny all; 但随之问题也出现了, 需要添加一个 ...
- Elasticsearch之性能优化
elasticsearch 使用有时候会出现CPU飙升,内存爆满情况,需要进行一些优化设置. 1. 一定要用es自带id生产策略 2. 设置副本数量为0,写入完可恢复 put localhost: ...
- 关于《完全手册Excel VBA典型实例大全——通过368个例子掌握》随书样例的下载
按照早先下载的电子教程查看和编写vba,有些例子使用运行错误,想着看看原始文件.容易看到,网上有提供的doc或者pdf文档,都不完整,可能是{完全手册Excel_VBA典型实例大全:通过368个例子掌 ...
- 如何正确使用 RMQ
序列分块.设块长为 \(B\).每块预处理出最大值.对于询问 \([l, r]\),答案就是整块最大值和散块最大值拼起来.答案显然是 \(O(n) \sim O(\dfrac{n}{B} + B)\) ...
- uni-app 蓝牙扫码适配
1.前言 蓝牙设备扫码的效率要高于手机摄像头 App需要进行对蓝牙扫码枪进行适配才能正常使用蓝牙设备枪,并兼容之前的摄像头扫码 适配的关键在于:扫码枪进行扫码时,需要对其进行事件监听,并拿到条码的值 ...
- Javascript Dom元素信息
1.Dom元素的大小 属性 说明 调用者 offsetWidth,offsetHeight 返回元素的宽高(border+padding) ,整数 当前Dom元素 clientWidth,client ...
- Vue中使用ref属性获取元素||组件标签
元素绑定属性 //绑定ref属性 <table ref="refTable"></table> 获取元素 //在方法内 this.$refs.refTabl ...
- P11378[GESP202412 七级]燃烧 题解
闲话 花了一个小时. 主要原因:条初始值硬控我半小时,题目看错硬控我半小时(悲). 正文 看题目,就是求从哪个点出发所得到的所有单调下降序列的总长度最长(这个描述好奇怪,不过意思是对的). 题目中说的 ...
- 推荐一款强大的开源物联网 Web 组态软件
前言 快速发展的物联网(IoT)领域,设备管理和监控的需求日益增长.为了满足这一需求并提供更高效的解决方案. 向大家推荐一款强大的开源物联网Web组态软件.这款软件不仅具备灵活的可视化配置功能,还提供 ...