自学内容网 自学内容网

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”}


原文地址:https://blog.csdn.net/weixin_46124208/article/details/143081134

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!