当前位置: 首页 > 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”}

相关文章:

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

参考地址: go-zero系列-限流(并发控制):https://go-zero.dev/docs/tutorials/service/governance/limiter hey地址:https://github.com/rakyll/hey1、压测工具hey下载安装: 会安装到GOPATH/bin目录下 go install github.com/ra…...

Electron-(三)网页报错处理与请求监听

在前端开发中,Electron 是一个强大的框架,它允许我们使用 Web 技术构建跨平台的桌面应用程序。在开发过程中,及时处理网页报错和监听请求是非常重要的环节。本文将详细介绍 Electron 中网页报错的日志记录、webContents 的监听事件以及如何监…...

银河麒麟(debian)下安装postgresql、postgis

1、安装postgresql、postgis sudo apt update sudo apt install postgresql postgresql-contrib sudo apt install postgis postgresql-12-postgis-32、创建一个使用postgis的数据库 sudo -i -u postgres #postgres管理员用户createdb gisdb #创建新的gisdb数据库 psql -d gi…...

【已解决】【Hadoop】 Shell命令易错点及解决方法

Hadoop是一个强大的分布式系统,用于处理大规模数据集。在使用Hadoop的过程中,熟练掌握其Shell命令是必不可少的。本文将介绍几个常用的Hadoop Shell命令,并总结一些常见的操作错误及其解决方法。 Hadoop Shell命令简介 Hadoop提供了多种She…...

ST7789读取ID错误新思路(以STC32G为例)

1.前言 前两天刚把ST7789写入搞定,这两天想折腾一下读取。最开始是读ID,先是用厂家送的程序,程序里面用的是模拟I8080协议,一切正常。后来我用STC32G的内置LCM模块,发现读取不出来。更神奇的是ID读不出来,…...

【MySQL】入门篇—基本数据类型:使用ORDER BY进行排序

MySQL作为一种流行的关系数据库管理系统,提供了强大的数据查询功能,其中ORDER BY子句用于对查询结果进行排序。排序可以帮助用户更直观地查看数据,发现趋势或异常,尤其在处理大量数据时尤为重要。 应用场景: 用户管理…...

java线程池bug的一些思考

科学需要对前人的怀疑,对权威的怀疑。 但是上学的时候,我们也需要去理解课本。 现在网上充斥了“java 线程池的缺点”这一观点。分析了一下线程池的工作原理,确实也存在这些问题。 Java线程池工作原理。核心线程数,最大线程数&…...

深入解析浮动布局及其在现代Web开发中的应用与替代(浮动的概念及应用、如何清除浮动、使用Flex布局和Grid布局的区别、使用`float`布局的历史和现状)

文章目录 1. 引言2. 浮动的概念及应用3. 如何清除浮动4. 使用Flex布局和Grid布局的区别5. 使用float布局的历史和现状6. 综合案例展示7. 结论8. 建议 1. 引言 在CSS布局的历史中,float属性曾是网页布局的主要工具之一。然而,随着现代布局技术&#xff0…...

WPF基础权限系统

一.开发环境 VisualStudio 2022NET SDK 8.0Prism 版本 8.1.97Sqlite 二. 功能介绍 WPF 基础权限系统,是一个支持前后端分离设计的 客户端(C/S)项目,该示例项目前端xaml使用UI库 ,Material Design Themes UI 来构建用户界面,确保…...

【Java函数篇】Java 8 Predicate函数接口的用法详解

为什么介绍Predicate 自从Java8发布以后,代码里面就多了很多函数式的接口和代码。在流式的编程中,我们经常会用到Predicate和其他函数,在一些开源的代码中也会看到别人定义的Predicate方法。但其实你有没有感觉在写代码的经历中,…...

C++ 一个反射的例子

在 C 中实现反射机制,虽然不像其他高级语言那样直接,但可以通过宏、模板和注册系统等技术来实现一个简易的反射系统。下面是一个完整的 C 反射机制示例,通过自定义类注册系统和宏定义,实现类的名称、属性、方法的反射 。 #includ…...

vue3 解决背景图与窗口留有间隙的问题

需要实现一个登录界面&#xff0c;login.vue的代码如下&#xff1a; <script> import { ref } from vue;export default {setup() {return {};}, }; </script><template><div id"login-container" class"login-container"><di…...

Cesium for UE-04-一些说明

目前主要做webgis的工作&#xff0c;UE官方对web的支持截止到了4.23版本&#xff0c;即使是4.23版本之后的4.xx版本也有办法支持&#xff0c;已经有大佬开源了一些方法和工具&#xff0c;不再介绍。即使是4.23想要输出为h5&#xff0c;也是有一定的折腾门槛的。最重要的是【Ces…...

AIGC:开启智能创造的璀璨新篇章

在当今科技迅猛发展的时代浪潮中&#xff0c;人工智能&#xff08; Artificial Intelligence , AI &#xff09;已然历经了从早期的计算智能、感知智能逐步迈向认知智能的辉煌历程。而在这一进程中&#xff0c; AI 生成内容&#xff08; Artificial Intelligence Generated Con…...

计算机组成原理与系统结构——外部存储器

笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt&#xff0c;仅供学习交流使用&#xff0c;谢谢。 磁盘 磁盘是一个由非磁性材料构成的圆形盘片&#xff08;称为基片&#xff09;&#xff0c;上面涂抹可磁化材料。传统的基片一直是铝制或铝合金的&#xff0…...

如何使用 Browserless 抓取动态网站?

什么是动态网页&#xff1f; 动态网页是指其内容并非完全直接嵌入在静态HTML中&#xff0c;而是通过服务器端或客户端渲染生成的网页。 它可以根据用户的操作实时显示数据&#xff0c;例如在用户点击按钮或向下滚动页面时加载更多内容&#xff08;如无限滚动&#xff09;。这…...

第21~22周Java主流框架入门-Spring 2.SpringAOP面向切面编程

1.Spring AOP (Aspect-Oriented Programming) 1. 1. 什么是 Spring AOP&#xff1f; AOP&#xff08;面向切面编程&#xff09; 是 Spring 提供的一种可插拔的组件技术&#xff0c;允许我们在软件运行过程中添加额外的功能。场景&#xff1a;假设有两个模块&#xff0c;用户管…...

Flutter不常用组件----InteractiveViewer

在现代移动应用开发中&#xff0c;用户互动性是提升体验的关键。Flutter 提供了多种组件来帮助开发者实现丰富的交互功能&#xff0c;其中一个强大的组件便是 InteractiveViewer。它允许用户通过手势对内容进行缩放、平移和旋转&#xff0c;适用于需要用户查看大图、地图或者其…...

【LeetCode HOT 100】详细题解之二分查找篇

【LeetCode HOT 100】详细题解之二分查找篇 35 搜索插入位置思路代码(左闭右闭)代码(左闭右开) 74 搜索二维矩阵思路代码(左闭右闭) 34 在排序数组中查找元素的第一个和最后一个位置思路代码 33 搜索旋转排序数组思路代码 153 寻找旋转排序数组中的最小值思路代码 4 寻找两个正…...

管理篇(顶级思维模型(31个))(待做)

目录 一、成长进阶模型 二、优势探索模型 三、优势层次模型 四、人生定位模型 五、看懂人性模型 六、如何抉择模型 七、本质思考模型 八、心流模型 九、精力管理模型 十、高效沟通模型 十一、100%传递模型 十二、高效倾听模型 十三、高效表达模型 十四、精准提问模…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...