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 负载测试工具的更多相关文章

  1. 开源负载测试工具k6比JMeter更容易的5件事

    k6是GitHub上提供的开源负载测试工具.它是用Go编写的,并运行用JavaScript编写的测试脚本.它受到了开发人员,测试人员和DevOps团队的强烈兴趣,并拥有超过4400名GitHub明星. ...

  2. HTTP/HLS/RTMP超级负载测试工具

    这个负载测试工具是网游分享的工具,可以在http://blog.csdn.net/win_lin/article/details/11835011 或者https://github.com/winli ...

  3. Locust分布式负载测试工具入门

    忽略元数据末尾 回到原数据开始处 Locust简介 Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试. 以下是github上的仓库地址 https://github.co ...

  4. HTTP/HLS/RTMP超级负载测试工具(转)

    这个负载测试工具是网游分享的工具,可以在http://blog.csdn.net/win_lin/article/details/11835011 或者https://github.com/winli ...

  5. loadrunner(预测系统行为和性能的负载测试工具)

    LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试.企业使用LoadRu ...

  6. Apache JMeter开源压力测试/负载测试工具 2.12 官方最新版

    软件介绍   Jmeter是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试),而且用Jmeter 来测试 Restful API, 非常好用. 如何学 ...

  7. 网站压力负载测试工具:Web版已逝,只好送大伙单机版

    前言: 最近老板资金周转出了点问题,工资好久没发了,于是暂闲置在家,静待老板弄到钱东山再起的消息: QQ群里,偶尔不时的会有人问,原来的分布式网站负载工具怎么下载不了啦?或者不能用啦?之类的问题. 我 ...

  8. 系统负载测试工具-LoadRunner

    LoadRunner的主要作用是对系统压力测试进行分析 与之相类似的工具是:badboy:录制脚本工具+jmeter:分析结果工具

  9. apache 负载测试工具 ab

    1.ab工具是apache自带的工具,可以测试服务器的负载能力 2.ab工具的参数 -v:版本 -c:并发数 -n:请求数 -t: 测试所进行的最大秒数 3.例子:ab -c 100 -n 100 - ...

  10. Web性能和负载测试工具补充

    压力测试文档:https://yq.aliyun.com/articles/377543https://www.cnblogs.com/ahjxxy/archive/2012/09/17/268899 ...

随机推荐

  1. json数据按照某一个相同键值进行分类成一个新的二维json数组

    1 formatTreeData(checkNodes){ 2 var map = {}, 3 targetData = []; 4 checkNodes.forEach(item => { 5 ...

  2. JavaCC : Java Glossary

    JavaCC Formerly known as Jack. JavaCC is a parser, like YACC (Yet Another Compiler Compiler), except ...

  3. 同步工具之Vector

    官网: https://vector.dev/ 用于构建可观察性管道的轻量级.超快速工具 [安装] curl --proto '=https' --tlsv1.2 -sSf https://sh.ve ...

  4. Blazor 组件库 BootstrapBlazor 中Markdown组件介绍

    组件介绍 Markdown组件是tui.editor的封装,所以所有内容均基于tui.editor. 默认状态下样子如下所示: 其代码如下: <Markdown Language="@ ...

  5. 对象存储 AVIF 图片压缩,即将公测!

    2021年8月,腾讯云数据万象以内测方式推出了最前沿的 AVIF 图片压缩服务,可以在图片主观质量相同的情况下大幅降低码率,节省储存空间. 经过3个月时间的内测,我们收集到了很多热心用户的反馈,AVI ...

  6. 给我2分钟,保证教会你在Vue3中实现一个定高的虚拟列表

    前言 虚拟列表对于大部分一线开发同学来说是一点都不陌生的东西了,有的同学是直接使用第三方组件.但是面试时如果你简历上面写了虚拟列表,却给面试官说是通过三方组件实现的,此时空气可能都凝固了.所以这篇文章 ...

  7. JEP 462 结构化并发是一个很愚蠢的提案

    https://openjdk.org/jeps/462 Motivation Developers manage complexity by breaking tasks down into mul ...

  8. Postgresql使用触发器实现同步插入两张表

    在有一个陈旧的系统的情况下,如果升级API可以优先使用微服务的形式,将数据库进行独立拆分,将原来的数据库原原本本地固定在旧系统中,然后在独立的微服务中运行与部署新系统. 如果原有的数据需要在更换结构的 ...

  9. Mybatis Plus条件构造器condition动态判断优化

    ConditionQueryWrapper package com.common.util; import com.baomidou.mybatisplus.core.conditions.query ...

  10. Qt编写可视化大屏电子看板系统32-模块10大屏地图

    一.前言 大屏地图模块采用浏览器模块+echart组件,Qt自带了webkit或者webengine模块,其中在win上mingw编译器的Qt5.6以后的版本,没有了浏览器模块,这个就需要用第三方的浏 ...