当前位置: 首页 > news >正文

基于 go-rwt 在 Windows 环境下对 Go Web 应用进行 HTTP 压力测试

基于 go-rwt 在 Windows 环境下对 Go Web 应用进行 HTTP 压力测试

这部分内容参考并搬运自 q1mi 老师的技术博客,原文的链接为:https://liwenzhou.com/posts/Go/benchmark-tools/。

压测相关术语

  • 响应时间(RT):指系统对请求(Request)做出响应的时间;
  • 吞吐量(Throughout):指系统在单位时间内处理请求的数量
  • QPS每秒查询率(Query Per Second):指一台服务器每秒能够响应的查询次数,是对一个查询服务器在规定时间内所处理流量多少的衡量标准
  • TPS(Transaction Per Second):每秒钟系统能够处理的交易或事物的数量
  • 并发连接数:某个时刻服务器所接受的请求总数

go-wrk

q1mi 老师在博客中提到了 ab 和 wrk 等压测工具,由于我使用的开发环境是 windows,可以直接使用 go-wrk 来进行压测(但是一般压测都应该是在服务器,go-wrk 在 linux 服务器上应该也可以工作)。

首先安装 go-wrk:

go get github.com/adeven/go-wrk

如果想要在 windows 的 terminal 当中使用 go 的包,那么首先需要在本地 gopath 路径下的 pkg 中找到这个包存放的位置,之后使用:

go mod init .

会生成一个可执行文件,再将这个文件夹的地址添加到 windows 的环境变量当中,即可在 terminal 直接使用 go-wrk 命令进行压测。【支持 GIN 框架热重载的 Air 工具也可以使用相同的方法来在 terminal 使用,此外,将地址添加到环境变量之后,应该重启 terminal,如果是在 Goland 这类 IDE 当中使用 terminal,那么请直接重启 Goland】

此时在命令行直接使用 go-wrk 命令,会显示提示信息,表示安装成功。

go-wrk 的使用方法与 wrk 类似,基本格式如下:

go-wrk [flags] url

常用的参数:

-H="User-Agent: go-wrk 0.1 bechmark\nContent-Type: text/html;":'\n'分隔的请求头
-c=100: 使用的最大连接数
-k=true: 是否禁用keep-alives
-i=false: if TLS security checks are disabled
-m="GET": HTTP请求方法
-n=1000: 请求总数
-t=1: 使用的线程数
-b="" HTTP请求体
-s="" 如果指定,它将计算响应中包含搜索到的字符串s的频率

一个使用 go-wrk 执行压测的例子如下,本例当中我直接对 bluebell 项目进行压测:

首先使用 air 在命令行启动 bluebell 项目,并在 8081 端口监听服务:
在这里插入图片描述

之后新开一个 terminal,使用 go-wrk 对 posts 这个 api 进行压测:

go-wrk -t=8 -c=100 -n=10000 "http://127.0.0.1:8081/api/v1/posts"
# 127.0.0.1 是本机的 IP 地址, 8081 是 GIN 监听的端口号, 请按照自己程序当中的配置设置

压测的结果:
在这里插入图片描述
当然,进行压测的方式也是对端口发送请求,在 air 端可以查看日志:
在这里插入图片描述
至此,根据 q1mi 老师的技术博客,我们了解了服务器性能的基本指标,了解了部分 HTTP 服务压测工具,并在 windows 环境下安装和使用 go-wrk 对 bluebell 项目的 posts 接口进行了压测。

相关文章:

  • 数仓搭建实操(传统数仓oracle):DWD数据明细层
  • Python绘画案例2——用Python写动态小人发射爱心~~,包含源码
  • C++ 类和对象(友元、内部类、匿名对像)
  • c++第一课(基础c)
  • 【Python爬虫(55)】Scrapy进阶:深入剖析下载器与下载中间件
  • 服务器系统都更新到windowsserver2025了
  • 完美解决:.vmx 配置文件是由 VMware 产品创建,但该产品与此版 VMware Workstation 不兼容
  • 如何将 Excel 数据转换为 SQL 脚本:从入门到实战
  • 机器学习---KNN算法核心原理和思路分析
  • 【2025深度学习环境搭建-1】在Win11上用WSL2和Docker解锁GPU加速
  • 2023 年 6 月大学英语四级考试真题(第 3 套)——解析版
  • 《Kali Linux从安装到武器化配置:打造你的数字军火库》
  • Qt常用控件之进度条QProgressBar
  • 调试无痛入手
  • 柠檬水找零(力扣860)
  • Mybatis-Plus使用page类实现分页查询
  • 基础dp——动态规划
  • AIGC-Stable Diffusion模型介绍
  • 数据库高安全—openGauss安全整体架构安全认证
  • GEE | 基于Landsat的1984-2024年归一化水体指数NDWI分析
  • 哈莉·贝瑞、洪常秀等出任戛纳主竞赛单元评委
  • 亮剑浦江丨上海网信部门处罚一批医疗服务类互联网企业,三大类问题值得关注
  • 女乘客遭顺风车甩客、深夜丢高速服务区,滴滴霸道回应:赔五百元
  • 首映|《人生开门红》:段子背后都是案子
  • 可实时追踪血液中单个细胞的穿戴医疗设备问世
  • 国际观察|伦敦会谈“降级”凸显美国乌克兰政策窘境