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

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/getName

get请求,运行200次,指定并发为600
hey -n 200 -c 600 http://192.168.1.4:8084/api/getName

post请求
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/api

Latency distribution:
  10% in 0.0675 secs
  25% in 0.0681 secs
  50% in 0.0689 secs
  75% in 0.0697 secs
  90% in 0.0702 secs
  95% in 0.0709 secs
  0% in 0.0000 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0025 secs, 0.0673 secs, 0.0709 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0000 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0002 secs
  resp wait:    0.0633 secs, 0.0600 secs, 0.0661 secs
  resp read:    0.0000 secs, 0.0000 secs, 0.0001 secs

Status 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/api

Latency distribution:
  10% in 0.0216 secs
  25% in 0.0833 secs
  50% in 0.0878 secs
  75% in 0.0901 secs
  90% in 0.0928 secs
  95% in 0.0966 secs
  99% in 0.0969 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0041 secs, 0.0155 secs, 0.0969 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0000 secs
  req write:    0.0001 secs, 0.0000 secs, 0.0007 secs
  resp wait:    0.0700 secs, 0.0083 secs, 0.0912 secs
  resp read:    0.0000 secs, 0.0000 secs, 0.0001 secs

Status 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.kler.cn/news/360965.html

相关文章:

  • 【JAVA】第三张_Eclipse下载、安装、汉化
  • ruoyi框架配置多数据源
  • C++11——智能指针
  • 秋招突击——8/6——万得数据面试总结
  • 深度学习 基本函数01
  • Linux-网络命令
  • 基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)
  • impdp+remap_schema导入后登录报ORA-01017: Invalid Username/password
  • SpringBoot基于微信小程序的上门幼儿照护服务系统(源码+lw+部署文档+讲解等)
  • 中间件之MQ-Kafka
  • [ 钓鱼实战系列-基础篇-5 ] 一篇文章教会你用红队思维设计钓鱼模板(附常见的钓鱼邮件模板)
  • KMP算法c++
  • [论文笔记]HERMES 3 TECHNICAL REPORT
  • Python程序设计 内置模块 随机函数
  • 【C++】踏上C++学习之旅(三):“我“ 与 “引用“ 的浪漫邂逅
  • 基于Python的自然语言处理系列(39):Huggingface中的解码策略
  • 标准/开源版本,长连接无法启动
  • HTTP协议讲解
  • vue3 的高频插件
  • 15分钟学Go 第8天:控制结构 - 循环