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 ...
随机推荐
- Vulhub WebLogic漏洞复现
目录 前言 任意文件上传漏洞(CVE-2018-2894) 管理控制台未授权RCE漏洞(CVE-2020-14882 & CVE-2020-14883) 未授权RCE漏洞(CVE-2023-2 ...
- flask 中的request【转载】
每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的,为了了解flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML+Flask 写一段前 ...
- 分享一个纯Python开发的系统程序,基于VSCode + WxPython开发的跨平台应用系统
本项目是基于 wxPython 开发的 GUI 应用,主要用于管理基础框架内容,包括用户.角色.机构.权限.日志.菜单.字典.附件.通用编码规则.配置管理等基础框架内容. 愿景是构建一个基于Pytho ...
- @EnableAutoConfiguration 标签使用
@EnableAutoConfiguration 这个注解的作用是: 从classpath中搜索所有META-INF/spring.factories配置文件然后,将其中org.springframe ...
- Adobe PS 2024 软件分享 torrent
Adobe-Photoshop-2024-25.5.0.375 下载工具建议使用 qBittorrent-enhance,qBittorrent, Transmission, uTorrent 等. ...
- 华为云云日志服务 HarmonyOS NEXT采集最佳实践
鸿蒙背景介绍 华为鸿蒙HarmonyOS系统是面向万物互联的全场景分布式操作系统,支持手机.平板.智能穿戴.智慧屏等多种终端设备运行,提供应用开发.设备开发的一站式服务的平台.2024 年 1 月 1 ...
- vue中this.$nextTick()
this.$nextTick()是在下一次DOM更新后执行其指定回调函数 this.$nextTick(回调函数) 使用场景:在改变数据后,要对更新后的DOM进行操作时使用
- IO介绍-中
系统接口 块设备接口 块设备:数据的存取和传输都是以数据块为单位的设备.典型的块设备是磁盘.该设备的基本特征是传输速率高,另一特征是可寻址,即能指定数据的输入源地址及输出的目标地址,可随机读写.磁盘设 ...
- 使用docker部署自己的网页版chatgpt
如果你有了一个Chat GPT账号想分享给多个人使用,最好还不用禾斗学上网别人就能访问,那么chatgpt-web这个项目可能刚好满足你的需求. 少点命令行,多点可视化,这里采用更直观的方式来搭建ch ...
- HarmonyOS Next 入门实战 - 文字转拼音,文字转语音
文字转拼音 安装 pinyin4js 三方库 ohpm install @ohos/pinyin4js pinyin4js 提供了以下接口: ● 文字转拼音(带声调和不带声调) ● 文字转拼音首字母 ...