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

go-zero系列-限流(并发控制)及hey压测

参考地址:

go-zero系列-限流(并发控制):https://go-zero.dev/docs/tutorials/service/governance/limiter
hey地址:https://github.com/rakyll/hey

1、压测工具hey下载安装:

会安装到GOPATH/bin目录下

go install github.com/rakyll/hey

如果提示: 先执行: go get github.com/rakyll/hey 再执行 go install github.com/rakyll/hey

no required module provides package github.com/rakyll/hey; to add it:go get github.com/rakyll/hey

在这里插入图片描述
windows下安装hey结果(会安装到GOPATH/bin目录下)
在这里插入图片描述

2. 修改yaml配置文件

#最大连接数
MaxConns: 100

3. 压测

3.1hey 简单介绍

-c 指定并发请求数,这里设置为25。即同时会有25个并发用户发送请求。
-z 指定发送请求测试持续时间。这里设置为1秒。即每个并发用户将发送请求并持续1秒。
-q 指定请求数量,这里设置为1。即每个并发用户发送1个请求。
-m 请求方法,比如GET/POST等  (默认get请求)
-n 运行次数

3.2 hey 简单请求


get请求,指定3s时间内,并发为500
hey -z 3s -c 500 http://192.168.1.4:8084/api/getNameget请求,运行200次,指定并发为600
hey -n 200 -c 600 http://192.168.1.4:8084/api/getNamepost请求
hey -z 3s -c 300 -m POST -H "Content-Type: application/json" -d "{'name': '王五'}" http://192.168.1.4:8084/api/editName

3.3 压测

压测 50 个并发,执行 1 秒, POST请求, 全部成功

hey -z 1s -c 50 -q 1 -m POST http://192.168.1.4:8084/notify/apiLatency distribution:10% in 0.0675 secs25% in 0.0681 secs50% in 0.0689 secs75% in 0.0697 secs90% in 0.0702 secs95% in 0.0709 secs0% in 0.0000 secsDetails (average, fastest, slowest):DNS+dialup:   0.0025 secs, 0.0673 secs, 0.0709 secsDNS-lookup:   0.0000 secs, 0.0000 secs, 0.0000 secsreq write:    0.0000 secs, 0.0000 secs, 0.0002 secsresp wait:    0.0633 secs, 0.0600 secs, 0.0661 secsresp read:    0.0000 secs, 0.0000 secs, 0.0001 secsStatus code distribution:[200] 50 responses

压测 120 个并发,执行 1 秒, POST请求, 其他20个限流

hey -z 1s -c 120 -q 1 -m POST http://192.168.1.4:8084/notify/apiLatency distribution:10% in 0.0216 secs25% in 0.0833 secs50% in 0.0878 secs75% in 0.0901 secs90% in 0.0928 secs95% in 0.0966 secs99% in 0.0969 secsDetails (average, fastest, slowest):DNS+dialup:   0.0041 secs, 0.0155 secs, 0.0969 secsDNS-lookup:   0.0000 secs, 0.0000 secs, 0.0000 secsreq write:    0.0001 secs, 0.0000 secs, 0.0007 secsresp wait:    0.0700 secs, 0.0083 secs, 0.0912 secsresp read:    0.0000 secs, 0.0000 secs, 0.0001 secsStatus code distribution:[200] 100 responses[503] 20 responses

从压测结果来看,我们的服务只能支持 100 个并发,超过 100 个并发的请求都会被限流,返回 503 状态码。 在服务的日志中也会出现限流相关的错误:

{“@timestamp”:“2024-10-19T16:56:26.677+08:00”,“caller”:“internal/log.go:82”,“content”:“(/notify/api- 192.168.1.4:53245) concurrent connections over 100, rejected with code 503”,“level”:“error”,“span”:“6569d42b8c7824bb”,“trace”:“75196ffa669dda69e6d814927957fab5”}

http://www.lryc.cn/news/466340.html

相关文章:

  • Electron-(三)网页报错处理与请求监听
  • 银河麒麟(debian)下安装postgresql、postgis
  • 【已解决】【Hadoop】 Shell命令易错点及解决方法
  • ST7789读取ID错误新思路(以STC32G为例)
  • 【MySQL】入门篇—基本数据类型:使用ORDER BY进行排序
  • java线程池bug的一些思考
  • 深入解析浮动布局及其在现代Web开发中的应用与替代(浮动的概念及应用、如何清除浮动、使用Flex布局和Grid布局的区别、使用`float`布局的历史和现状)
  • WPF基础权限系统
  • 【Java函数篇】Java 8 Predicate函数接口的用法详解
  • C++ 一个反射的例子
  • vue3 解决背景图与窗口留有间隙的问题
  • Cesium for UE-04-一些说明
  • AIGC:开启智能创造的璀璨新篇章
  • 计算机组成原理与系统结构——外部存储器
  • 如何使用 Browserless 抓取动态网站?
  • 第21~22周Java主流框架入门-Spring 2.SpringAOP面向切面编程
  • Flutter不常用组件----InteractiveViewer
  • 【LeetCode HOT 100】详细题解之二分查找篇
  • 管理篇(顶级思维模型(31个))(待做)
  • 十一、数据库配置
  • day02 -- docker
  • ecmascript标准
  • 在Linux命令行中一行执行多个命令
  • u盘快速格式化后怎么恢复文件:深入解析与全面指南
  • 青少年编程能力等级测评CPA C++(二级)试卷(2)
  • aws 把vpc残留删除干净
  • 平衡二叉树最全代码
  • 数据库表的创建
  • 【MySQL 数据库】之--基础知识
  • Flume面试整理-如何处理Flume中的数据丢失