大白话高并发(三)

news2024/11/17 11:41:26

背景

高并发得第三篇,讲一讲压测吧,因为我的目的是模拟100万人同时来秒杀。

是不是真的要找100万个人

没必要 ,你就算100万人掐着表在同一毫秒内把请求请求某一台机器,服务器也不可能在同一时间处理那么多请求,因为服务器的io模型大多是多路复用,网络模型是reactor,都是排队一个一个来处理的,而且单台服务器能不能承受100万并发也是个问题,所以针对短链接来说,测出来单台机器的最大qps才是关键,比如我得并发量是100万单台机器的最大qps是2万那么我就需要50台机器,(注意我这里说的是短链接,如果你是长连接肯定是要模拟100万个端,每个机器有大概6万个端口,因此需要16台机器作为客户端,服务端通过参数调整服务器的最大文件数为100万)

压测的思路

在这里插入图片描述

我觉得这张图特别的好,
在“并发连接与吞吐量”的图中,吞吐量的峰顶处对应的并发连接数,就是系统能处理的极限并发连接数了。
而在“延迟与吞吐量”的图中,在吞吐量颓势未显时达到设定的最大延迟处,就是系统的最大吞吐量了。

在这里插入图片描述

也就是说你先逐步增大并发找到qps最大那个点,比如刚开始并发100qps10000,然后并发200qps20000,并发300qps下降到19000了,并发400qps18000了,那么我们说20000qps就是这台机器最大的吞吐量了,然后我们设置一个请求响应延迟的阈值,比如我要求我们团队的接口不能超过200毫秒,那么我就看一下,虽然最大qps是20000但是每个接口的延迟是300毫秒,所以这不是我想要的,那就降低并发量,发现15000qps的时候延迟为200毫秒,所以我们就可以说每台机器的qps为15000,那么我们要是想支持100万人秒杀,就需要100/1.5大约70台机器。

还有我们常说的28定律 百分之80的用户在每天百分之20的时间来访问,假设平台用户是300万,一天24小时

(30000000.8) / (2460600.2)= 173
也就说你只要保证你的接口qps能做到173就可以应付大部分日常场景了,但是我们说的是秒杀场景,还是要求高一点

go-stress-testing

在这里插入图片描述

所以我们就看看github上用golang实现的压测软件,直接看源码。

main.go

在这里插入图片描述

dispose方法

在这里插入图片描述
其实就是for循环了需要多少个go携程去请求,真的没什么

http方法

在这里插入图片描述
一样,也只是循环了单个携程请求的数量。

总结

规定好最大延迟,测出单台机器最大qps,再根据你预计的人数,就知道了需要多少台机器

参考
https://zhuanlan.zhihu.com/p/85896572

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同步辐射XAFS表征方法的应用场景分析

X射线吸收精细结构XAFS表征方法是一种用于研究物质结构和化学环境的分析技术。XAFS 使用 X 射线照射到物质表面,并观察由此产生的 X 光吸收谱。 ​XAFS 技术通常应用于研究高分子物质、生物分子、纳米结构和其他类型的物质。例如,XAFS 可以用来研究高分子…

使用git上传项目到GitHub教程

文章目录一、安装Git二、上传本地文件到git上。1.创建本地版本库2.通过命令git init把这个文件夹变成Git可管理的仓库3、使用git commit -m "XXX"命令提交4、在Github上创建一个Git仓库5、执行git remote add origin xxxxxxxx.git6、使用$ git push -u origin master…

35、基于51单片机自动灭火避障智能小车 消防灭火小车系统设计

摘要 智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车就是其中的一个体现,本次设计的多功能智能灭火避障小车&#…

MySQL番外篇-硬件优化概述

备注:测试数据库版本为MySQL 8.0 硬件优化概述 MySQL的硬件有: CPU内存硬盘网络资源 对于硬件的选择与调优,在系统上线前就需要考虑起来。 当然我们都知道: 好的CPU,可以让SQL语句解析得更快,进而加快SQL语句的执行速度。大的内存&#…

GEE学习笔记 八十七:python版GEE动态加载地图方法

在Google Earth Engine的python版API更新后,之前使用folium动态加载地图的代码就不能在正常运行,因为整个Google Earth Engine的地图加载服务的URL发生了更新,所以我们也需要更新相关绘制方法。下面我会讲解一种新的绘制方法,大家…

【深度学习】激活函数

上一章——认识神经网络 新课P54介绍了强人工智能概念,P55到P58解读了矩阵乘法在代码中的应用,P59,P60介绍了在Tensflow中实现神经网络的代码及细节,详细的内容可以自行观看2022吴恩达机器学习Deeplearning.ai课程,专…

NVIDIA Tesla V100部署与使用

在先前的实验过程中,使用了腾讯云提供的nvidia T4GPU,尽管其性能较博主的笔记本有了极大提升,但总感觉仍有些美中不足,因此本次博主租赁了nvidia V100 GPU,看看它的性能表现如何。 和先前一样,只需要将服务…

2023美赛A题思路数据代码分享

文章目录赛题思路2023年美国大学生数学建模竞赛选题&论文一、关于选题二、关于论文格式三、关于论文提交四、论文提交流程注意不要手滑美赛A题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取一手资源 202…

医学图象分割常用损失函数(附Pytorch和Keras代码)

对损失函数没有太大的了解,就是知道它很重要,搜集了一些常用的医学图象分割损失函数,学习一下! 医学图象分割常见损失函数前言1 Dice Loss2 BCE-Dice Loss3 Jaccard/Intersection over Union (IoU) Loss4 Focal Loss5 Tvesky Loss…

学生投票系统-课后程序(JAVA基础案例教程-黑马程序员编著-第三章-课后作业)

【案例3-4】学生投票系统 记得 关注,收藏,评论哦,作者将持续更新。。。。 【案例介绍】 案例描述 某班级投票竞选班干部,班级学生人数为100人,每个学生只能投一票。 本任务要求,编程实现一个投票程序&…

2023美赛赛题和数据公布啦~【附中文翻译版】

2023美赛赛题和数据公布啦~ 加2023年的美国大学生数学建模竞赛 数学建模竞赛是一项在全球范围内非常受欢迎的竞赛,旨在鼓励学生运用数学知识和建模技能解决实际问题。这项竞赛不仅对学生的数学能力提出了很高的要求,还对他们的创造性、团队协作和沟通能…

经典算法题---链表奇偶重排(好题)双指针系列

我听别人说这世界上有一种鸟是没有脚的,它只能够一直的飞呀飞呀,飞累了就在风里面睡觉,这种鸟一辈子只能下地一次,那一次就是它死亡的时候。——《阿甘正传》这一文章讲解链表的奇偶排序问题,这是一道不难但是挺好的链…

凹凸贴图(Bump Mapping)

凹凸贴图是什么? 我们首先来看low-poly(多边形数较少)mesh和high-poly(多边形数量较多)mesh之间的不同。首先,最明显的不同就是high-poly能够表现出更多细节,但high-poly有比较大的性能开销。有…

springboot下@transcation使用基本介绍

springboot下transcation基本使用的几种可能 普通常使用的几种可能(事务的传播行为默认值Propagation.REQUIRED): transcation只在使用方法A上,A内无调用其他方法,事务正常方法A和方法B在同一个类下,transc…

net6中使用FluentValidation做实体验证(批量注册)

实体验证-FluentValidation 首先明白两个概念 自动验证:就是在请求进入到控制器前FluentValidation就自行完成实体的验证并做错误返回, 优点:简单 少一些手动调用的代码缺点:灵活性差,不好控制,不支持异步…

智慧校园电子班牌系统

智慧电子班牌区别于传统电子班牌,智慧校园电子班牌系统更加注重老师和学生的沟通交流和及时数据交互。学校为每个教室配置一台智能电子班牌,一般安装于教室门口,用来实时显示学校通知、班级通知,可设置集中分布式管理,…

RSA加解密简单实现

目录 浅谈加解密实现方式 MD5加密 DES加密 AES加密 RSA加密 SSL加密认证 关于RSA加解密实现 简单数据加解密的实现 分块加解密实现 附录 浅谈加解密实现方式 关于数据加解密方式,我们一般分为不可逆加密、对称可逆加密、非对称加密、综合加密应用等&…

魔改并封装 YoloV5 Version7 的 detect.py 成 API接口以供 python 程序使用

文章目录IntroductionSection 1 起因Section 2 魔改的思路Section 3 代码Part 1 参数部分Part 2 识别 APIPart 3 完整的 DetectAPI.pyPart 4 修改 dataloaders.pySection 4 调用ReferenceIntroduction YoloV5 作为 YoloV4 之后的改进型,在算法上做出了优化&#xf…

errgroup 原理简析

golang.org/x/sync/errgroup errgroup提供了一组并行任务中错误采集的方案。 先看注释 Package errgroup provides synchronization, error propagation, and Context cancelation for groups of goroutines working on subtasks of a common task. Group 结构体 // A Gro…

Sphinx : 高性能SQL全文检索引擎

Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。 Sphinx的特点 快速创建索引:3分…