【红包雨压测环境】

news2024/11/15 7:10:05

文章目录

      • 红包雨压测环境
      • 并发预估
      • 积分与权重
        • 对于新用户,活跃度占比为70%,贡献度占比为30%。
          • 活跃度权重分配:
          • 贡献度权重分配:
        • 对于高质量作品的作者,活跃度占比为30%,贡献度占比为70%。
          • 活跃度指标权重:
          • 贡献度指标权重:
        • 对于普通用户,活跃度占比为50%,贡献度占比为50%。
          • 活跃度权重分配
          • 贡献度权重分配
      • 每个用户分发的红包数量
      • 每个红包的存活时间
      • 随机分配红包位置
      • 红包速度、红包运动的轨迹、红包落地
      • 红包状态、抢夺结果
      • 服务器环境配置
        • 华为云
        • 阿里云
        • 腾讯云
      • 按照二八法则来推算 30w 用户的访问量
      • Tomcat 影响因素

红包雨压测环境

  1. 参加活动的用户数量:10万人
  2. 红包雨持续时间:30分钟
  3. 一共5场,每次持续30秒
  4. 每个用户在每场红包雨期间发出的请求数量:90个
  5. 响应时间:500毫秒
  6. 每台机器的使用情况:80%的CPU和内存,每个请求需要占用2MB的带宽
  7. 积分作为基础权重,活跃度和贡献度指标的加权平均值作为调整权重
  8. 总红包金额:100000元
  9. 最小红包金额:0.01元
  10. 最大红包金额:10元
  11. 70%的请求集中在前15分钟内
  12. 用户每秒发起的请求3个
  13. 用户总数:30万
  14. 在线人数:3万
  15. 环境英国和波兰
  16. 日活跃用户平均每天使用时长为约30分钟,每天打开次数在5-6次
  17. Java环境/SpringBoot+SpringCloud+MyBatis/Redis/MySQL/RocketMQ/JDK8
  18. 独立部署

并发预估

计算红包雨期间总请求数量: 总请求次数 = 用户数量 x 每个用户在红包雨期间发出的请求数量 总请求次数 = 10万 x 15 = 150万次

计算红包雨期间每分钟请求次数: 每分钟请求次数 = 总请求次数 ÷ 红包雨持续时间(分钟数) 每分钟请求次数 = 150万 ÷ 30 = 5万次/分钟

高峰期:150万 x 0.7 = 105万次,105万次 ÷ 15 = 7万次/分钟

峰值:

积分与权重

用户发布文章得10积分、点赞和评论得1积分、分享得5积分。

权重 = 积分 + 0.5 * 活跃度 + 0.5 * 贡献度

对于新用户,活跃度占比为70%,贡献度占比为30%。

新用户可以获得更高的活跃度权重,激励其参与平台活动。活跃度和贡献度比例:70:30。

活跃度权重分配:

登录频率的权重可以为20%
阅读文章的数量的权重可以为30%
关注的话题的权重可以为10%
分享的内容的权重可以为10%

贡献度权重分配:

发布文章的质量的权重可以为10%
被点赞的数量的权重可以为10%
被评论的数量的权重可以为5%
被分享的数量的权重可以为5%

对于高质量作品的作者,活跃度占比为30%,贡献度占比为70%。

根据用户行为数据,对用户进行分析。高质量作品的作者可以获得更高的贡献度权重,激励其继续创作。活跃度和贡献度比例:30:70

活跃度指标权重:

登录频率:5%
阅读文章的数量:5%
关注的话题:5%
分享的内容:15%

贡献度指标权重:

发布文章的质量:25%
被点赞数量:15%
被评论数量:15%
被分享数量:15%

对于普通用户,活跃度占比为50%,贡献度占比为50%。

普通用户活跃度和贡献度比例:50:50。

活跃度权重分配

登录频率: 30%
阅读文章的数量: 30%
关注的话题和分享的内容: 40%
登录频率可以占总权重的15%
阅读文章的数量可以占总权重的15%
关注话题可以占总权重的10%
分享内容可以占总权重的10%

贡献度权重分配

文章质量可以占总权重的15%
被点赞数量可以占总权重的10%
被评论数量可以占总权重的10%
被分享数量可以占总权重的15%

每个用户分发的红包数量

首先红包雨肯定是提前生成好的,在预热阶段已经拆分好具体的金额和数量了,60个。

每个红包的存活时间

根据年龄分配,超过60岁的为2秒,低于60岁的1.5秒

随机分配红包位置

在后端生成随机数,并将位置和数量发送给前端呈现,避免在客户端,用户可以通过调试工具等手段获取到随机数的算法,从而影响红包的位置。

红包速度、红包运动的轨迹、红包落地

红包速度、红包运动轨迹和红包落地方式都是设计游戏体验和用户体验的重要因素。以下是一些参考值:

  1. 红包速度:一般来说,红包速度应该不太快也不太慢,以确保玩家有足够的时间点击红包。速度的参考值为每秒钟移动40到60个像素。

  2. 红包运动轨迹:为了增加游戏趣味性和挑战性,可以设计不同的红包运动轨迹。参考值包括上下浮动、左右摆动、斜着飞行等。

  3. 红包落地方式:落地方式可以设计成落到地面反弹、落到地面直接停止等。参考值为落到地面后反弹的弹性系数设置为0.6至0.8。

需要注意的是,以上参考值仅供参考,实际的设计应该根据游戏类型和玩家群体做出具体的调整。

红包状态、抢夺结果

红包雨的红包状态可以设计为以下几种:

  1. 未开始状态:在活动时间之前,红包雨活动会显示为未开始状态,用户无法进行任何操作。

  2. 进行中状态:在活动开始后,红包雨会进入进行中状态,此时用户可在规定的时间内参与抢红包活动。

  3. 结束状态:当规定的时间到达或红包数量达到限制时,红包雨活动会进入结束状态,此时用户无法进行任何操作。

抢夺结果可以设计为以下几种:

  1. 抢到红包:用户抢到红包后,可以在弹出的提示框中看到抢到的红包金额或优惠券信息。

  2. 未抢到红包:用户如果没有抢到红包,可以在弹出的提示框中看到未抢到的信息提醒,同时可以继续等待下一轮红包雨。

  3. 已经抢完:在红包雨活动结束后,如果红包已经被抢完,用户可以看到已经抢完的信息提示。

服务器环境配置

华为云

2台8核16GB通用型SSD500GB
云数据库Redis2核4节点
云数据库主备4核16GB通用型SSD200GB
弹性负载均衡
内容分发网络
缺点没有英国的,切仅包年包月
在这里插入图片描述在这里插入图片描述

阿里云

3台8核16GB通用型SSD500GB
优点,有英国伦敦的服务器,且支持按量收费
在这里插入图片描述

ALB负载均衡(最高百万并发)计费方式:
https://help.aliyun.com/document_detail/447066.html?spm=a2c4g.311110.0.0.49403365fCu0sZ
ALB规格:
https://help.aliyun.com/document_detail/197202.html?spm=a2c4g.250240.0.0.6e69253bJsXvzj

CDN默认是按量计费,但是如果想包年包月计费可以购买资源包,利用资源包进行抵扣
具体扣费标准参考以下文档:
https://help.aliyun.com/zh/cdn/product-overview/billing-rules-of-basic-services?spm=a2c4g.11186623.0.0.32ec4ebfZpo5tP

腾讯云

法兰克福节点覆盖欧洲地区用户,带宽主要面向海外,大陆访问延时较高。
在这里插入图片描述

按照二八法则来推算 30w 用户的访问量

假设有 30W 用户,每天访问网站的用户占比为 20%,那么每天大约有6W 用户访问。
假设每个用户平均点击6次,那么总的页面浏览量 PV=36W。
一天有 24 小时,根据二八定律,每天大部分用户活跃的时间点集中在(24 * 0.2) 约等于 5 个小时以内,而大部分用户指的是(36w点击 * 80%)约等于 28.8W(PV), 意味着在 5 个小时以内,大概会有 28.8W 点击进来,也就是每秒大约有 16( 28.8W/5 小时/3600)个请求。
16只是一个平均数值。在这 5 小时内,请求量并不一定均匀,可能会出现大量用户集中访问的情况(比如像淘宝这样的网站,日访问量高峰时间段集中在下午 14:00 和晚上 21:00,其中 21:00 是一天中访问量的最高峰)。通常情况下,访问量高峰时段的请求量是平均请求量的 3 到 4 倍(这是一个经验值),我们按照 4 倍来计算。那么在这 5 小时内,可能会出现每秒 64个请求的情况。因此,问题由原本的支撑 30W 用户,变成了一个具体的问题,就是服务器端需要能够支撑每秒64 个请求(QPS=64 )。而这仅是日常访问量而言。

而压测环境下红包雨的用户在10万,一共5场,红包雨持续时间:30分钟,六分钟一场,平均每场大概有2万用户每秒发起的请求3个,每次持续30秒,2w*3=6W(PV),6w/30=2000个请求每秒。峰值4倍就是每秒8000个请求(QPS),TPS是(8000/0.5)= 16000(TPS是指每秒事务处理数,即每秒钟能完成多少个操作)。

Tomcat 影响因素

Tomcat 是一个基于 Java 的 Web 服务器,它需要通过 TCP 连接与客户端进行通信。TCP 连接对系统资源的开销最大的是内存,因为它需要设置读取缓冲区和写入缓冲区。在 Linux 系统中,这两个缓冲区的最小大小为 4096 字节。因此,一个 tcp 连接最小占用内存为 4096+4096 = 8k。如果机器内存为 8G,那么最大并发数约为 100 万。但是,在实际应用中,受到 Linux 内核对部分资源的限制以及程序业务处理的影响,8GB 内存很难达到 100 万连接。而对于红包雨而言,基本到不了这个级别的连接,所以不用担心这一个因素。

Tomcat 依赖的 JVM 的配置,JVM 内存的大小受到服务器配置的影响,例如,一台拥有 2 个核心和 4G 内存的服务器,分配给 JVM 进程的内存大约为 2G。这是因为服务器本身也需要内存,并且还需要为其他进程预留内存。这 2G 内存还需要分配给栈内存、堆内存和元空间,因此,堆内存可用的大约为 1G。

Tomcat 本身的配置:accept-count:这是最大等待数,当 HTTP 请求数量达到 Tomcat 的最大线程数时,如果有新的 HTTP 请求到达,Tomcat 会将该请求放入等待队列中。这个 acceptCount 就是指能够接受的最大等待数,默认值为 100。如果等待队列也被填满,那么新的请求将会被 Tomcat 拒绝(connection refused)。
maxThreads:这是最大线程数,每当一个 HTTP 请求到达 Web 服务时,Tomcat 都会创建一个线程来处理该请求。maxThreads 决定了 Web 服务容器能同时处理多少个请求。maxThreads 默认值为 200,建议增加。然而,增加线程会有成本,更多的线程不仅会带来更多的线程上下文切换成本,还会消耗更多的内存。JVM 默认在创建新线程时会分配大小为 1M 的线程栈,因此,更多的线程意味着需要更多的内存。线程数的经验值为:1 核 2g 内存为 200,线程数经验值 200;4 核 8g 内存,线程数经验值 800。
maxConnections:这是最大连接数,这个参数指定了在同一时间内,Tomcat 能够接受的最大连接数。对于 Java 的阻塞式 BIO,默认值是 maxthreads 的值;如果在 BIO 模式下使用自定义的 Executor 执行器,默认值将是执行器中 maxthreads 的值。对于 Java 新的 NIO 模式,maxConnections 默认值是 10000。对于 Windows 上的 APR/native IO 模式,maxConnections 默认值为 8192。
如果设置为-1,则禁用 maxconnections 功能,表示不限制 tomcat 容器的连接数。maxConnections 和 accept-count 的关系为:当连接数达到最大值 maxConnections 后,系统会继续接收连接,但不会超过 acceptCount 的值。

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

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

相关文章

杭州企业型通配符SSL数字证书

通配符SSL数字证书是众多数字证书产品中比较特殊的一款产品,在互联网安全领域,SSL数字证书是保障网站安全性的一种重要手段。而通配符SSL数字证书,更是其中的一种特殊类型,它允许用户对多个域名进行保护,只需一张证书即…

C++--简单实现定长内存池

1.什么是定长内存池 在C/C中,动态申请内存都是通过malloc来申请的,但是实际上不是是直接从堆上直接申请的内存,而是通过malloc动态申请一大块内存,malloc就相当于一块内存池,然后分给程序使用,如果申请的内…

网络安全进阶学习第十六课——业务逻辑漏洞介绍

文章目录 一、什么是业务逻辑二、业务逻辑漏洞的成因三、逻辑漏洞的重要性四、业务逻辑漏洞分类五、业务逻辑漏洞——业务授权安全1、未授权访问2、越权访问1) 平行越权(水平越权是指相同权限的不同用户可以互相访问)2) 垂直越权(垂直越权是指…

企业架构LNMP学习笔记47

企业架构队列缓存中间件分布式redis: 一直想学习下这块的。今天总算学到了,好好把redis的这块内容理解下。 1)能够描述Redis作用及其业务适用场景 ; 2)能够安装配置启动Redis; 3)能够使用命令…

Qt使用注意事项

1.菜单选项不能出现数字,可以是 英文 加 “_”: 2.如何确保加载的图片,尺寸大小与原来一样? 【QT】添加图片资源并使用QImage加载图片显示_qimage显示图片_李春港的博客-CSDN博客 ui->PicLabel->setPixmap(QPixmap::fromIm…

(9.8-9.14)【大数据新闻速递】

加gzh“大数据食铁兽”,了解更多大数据快讯 【2023百度十大科技前沿发明】 近日,百度发布了“2023百度十大科技前沿发明”,包括“基于大模型的检索生成决策交互一体的智能系统”“基于大模型的端到端搜索技术”“飞桨端到端自适应的分布式训…

网络工程师的甩锅指南,果断收藏

大家好,我是老杨。 都说IT行业最容易被甩锅的就是网工,这是有科学依据的,比如: 纵观我网工群的群友聊天,“锅”不离口,很难不说明一点什么问题。 遇到甩锅,我相信没有哪位朋友的心情是愉悦的。…

父子工程搭建

1. 构建父工程 父工程的职责是对依赖包的版本进行管理,创建父工程分两步,第一创建父工程,第二在pom.xml编辑依赖管理。 进入新建模块界面,选择Spring Initializr,填写模块的信息: 创建成功,删…

linux服务器内服务访问域名Name or service not know

目录 linux服务器内服务访问域名Name or service not know 1.前言2.排查是不是这个域名无法访问2.1服务内ping 这个域名2.2在浏览器打开这个域名2.3服务内ping 这个域名所对应的ip2.4在服务器内配置host 总结参考 文章所属专区 项目问题解决 1.前言 linux服务器内服务访问域名…

许可分析 license分析 第五章

许可分析是指对软件许可证进行详细的分析和评估,以了解组织内部对软件许可的需求和使用情况。通过许可分析,可以帮助组织更好地管理和优化软件许可证的使用。以下是一些可能的许可分析方法和步骤: 软件许可证自动化管理:考虑使用自…

飞驰的高铁-第15届蓝桥杯第一次STEMA测评Scratch真题精选

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第150讲。 飞驰的高铁,本题是2023年8月20日举行的第15届蓝桥杯STEMA测评Scratch编程中级组编程第2题&#…

字节、京东等大厂年薪50w的测试都什么水平?

各位做测试的朋友,但凡经历过几次面试,那么你一定曾被问到过以下问题: 1、在Linux环境下,怎么执行web自动化测试? 2、Shell如何,Docker熟悉吗? 3、全链路的压测实操过吗,如何推进与开…

hexo搭建一个自己的博客

hexo腾讯云服务器搭建一个自己的博客 我的博客: http://www.elcarimqaq.top/ 前期准备 node.js: https://nodejs.org/en/ git:https://git-scm.com/download/win hexo官方文档:https://hexo.io/zh-cn/docs/index.html 安装hexo npm ins…

“存量竞争” 体验为王,火山引擎边缘云助力内容社区破局

今年4月,在宣布要技术升级、数据重构后,承载无数人青春的天涯社区疑似关停,一代传奇的衰落为所有内容社区释放出了不可忽视的信号。 图片来源:天涯官博 回顾天涯社区发展史,从“周公子大战易烨卿”、天涯十大诡异事件&…

“批量文件改名:将日语文件名翻译成中文,轻松管理你的文件!

如果你经常处理各种文件,可能有时候会遇到一些以日语命名的文件。这时候,为了更好地管理和查找文件,你可能需要将这些日语文件名翻译成中文。那么,如何实现批量将日语文件名翻译成中文呢? 首先,第一步进入…

对抗生成网络总结

对一些基本的对抗生成网络的总结。部分内容整理自Teeyohuang’s blog 文章目录 GAN (NeurIPS, 2014)CGANDCGANStackGANPix2Pix (CVPR, 2017)CycleGAN (ICCV, 2017)SRGAN (CVPR, 2017)StyleGAN (CVPR, 2019) GAN (NeurIPS, 2014) Generative adversarial nets m i n G m a x D …

有关‘全局唯一id‘

UUID和Snowflake的对比 当需保证全局唯一的id,可以选用UUID或Snowflake(及其变种) 其中UUID 不依赖于任何第三方系统,性能和可用性上较好; Snowflake生成的id具有单调递增性(可以拿到生成时的时间戳信息),能…

深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数

在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函数是…

HTML中name和class,id的区别和联系

在HTML中,name、class和id是用于标识和选择元素的属性。 区别: name属性:用于标识表单元素,特别是在提交表单时,用于识别表单数据。name属性可以在同一表单中的多个元素中重复使用。class属性:用于为一个…

品牌出海推广策略:海外网红营销和TikTok挑战赛的完美结合

随着全球化的深入,越来越多的品牌意识到在海外市场的存在至关重要。然而,进入国际市场并建立品牌知名度是一项复杂的任务,需要创新和多样化的策略。在这个数字化时代,品牌出海推广策略的一个令人兴奋的新趋势是将海外网红营销与Ti…