问题解决
1、前端开发方面的问题
关于electron使用第三方nodejs模块编译打包的注意事项
关于使用electron开发串口项目中编译的一些注意事项
推荐一款更好用的字体抽取工具font-spider
failed Error: not found: python2.7的问题解决
thinkphp5.0.24兼容php7.4
nginx配置api前缀url转发,解决跨越访问
uni-app使用阿里iconfont多色图标
公众里如何发布竖版的视频,使用SVG方式
使用requireJS引入element-ui
2、后端开发方面的问题
记一次在centos7下安装Django博客的安装踩坑
oracle Cause: java.sql.SQLException: 调用中的无效参数
四种方式可以获取到nacos里的配置信息
gradle3.1升级到gracle7.6版本需要更新的地方
Idea解决Service启动服务不显示端口号的问题
docker中部署的flowable流程图乱码
jdk11版本的jenkins如何打包jdk8项目 ?
windows下面批量更新某个文件夹下面所有的git项目目录
在centos7.9环境上安装 nodejs20版本
3、部署运维方面的问题
virtualBox虚拟机拓展磁盘空间
win10家庭版本安装远程桌面
ssh连接虚拟机CentOS缓慢解决方法
jenkins构建的时候报git: Permission denied错误
安装sqlserver2017的时候遇到的两个坑
CentOS 的 YUM安装时卡死解决方案
docker容器在还原nexus3的数据的时候,注意
4、效率提升方面
win10系统右键没有新建文本文档的选项
微信双开的脚本.bat
Github Copilot如何使用,使用的快捷方式
copilot GitHub Copilot could not connect to server. Extension activation failed: “getaddrinfo ENOTFO
使用ffmpeg 将mp4里的音频摄取成mp3
5、问题的反思
记一次解决投票高并发引发的性能问题
uniapp 在远程调试的时候,报错Invalid Host header
解决绘世启动器的报错:Could not initialize Tensile library
Photoshop2024无法拖动图片导入的解决办法
kgm音乐文件解密操作
玄派星曜+开源宇宙eg01-c+rtx 4060ti 的一些配置说明
centos9上面安装wireguard后,无法启动服务Failed to set DNS configuration: Could not activate remote peer.
本文档使用 MrDoc 发布
-
+
首页
记一次解决投票高并发引发的性能问题
今天是3月29号,也就是今天下午5点30分,这个投票的小活动终于结束了。 > 事情的前因是这样的,一周前给某机关单位开发上线了一款人员拉票的H5应用,需要在微信内访问。 本来没有瞧得上他们这个活动,心里想能能有几个人访问啊,没当回事 谁知道周一晚上上线,周二一大早H5应用就卡死打不开了。。。 ## 服务宕机 周二早上还吃着早饭呢,,发现在我的博客www.bjphper.com 访问邮件告警,打不开页面。 赶紧登录服务器看看咱回事,心里想是不是昨天晚上 上线的投票小程序流量太大,带宽不够了。 我用的是阿里的按流量计费的套餐,设置的带宽是20M,闭眼直接把带宽调成了最大的100M。。 调完之后傻眼了,,还是慢,完全没有解决掉问题。。 一看CPU占用,一直100%。。 服务器配置是 1核2G,,平时上面跑着1个小程序商场和几个网站,没有出现过卡的情况。。 看完CPU的占用,我得出来的结论是,得把投票小程序 单独放一个高配置的服务器。 ## 升级配置 直接阿里云 ,买了按量付费的ECS,配置直接升级成了4核8G,按小时付费,每小时5毛钱,哈哈,有点小激进,用小皮面板 15分钟安装完运行环境,域名重新做了指向,公众号里加入了新买服务IP的白名单。 一个小时搞定全部,包括程序的迁移和数据库的迁移,10点半左右,,访问速度直接起飞了。。 当时看了一下ECS的连接数,一直维持在400-500左右,最高大概2000多吧,对CPU的占用和内存的占用没什么压力。 当天晚上看了下CPU和内存的占用,感觉配置没必要这么高,直接给降配成了2核4G,降配后,速度没怎么变,还是很快。。 ## 图片压缩 看了看H5页面加载的图片资源 ,因为当时是设计师直接发我的,不看不知道,一看吓一跳,,每张图片的大小都超过了1M,有些是2M,难怪我那个流量费 蹭蹭的扣。一个小时10个G的流量,10块钱,心在滴血。。1M的png直接转jpg,宽度直接限定到750px,高度等比例缩放。。这么一压缩 ,1M的图片直接变成了66kb,,,舒坦!!! ## 优化索引 但是今天可能 是投票的最后一天了,,今天下午的流量再次 爆发了,ECS同时访问数4000+。 CPU一直占用100%。客户反馈页面要打开好几次才能正常访问,,页面访问 极不稳定。。 下面是当时的监控图:  ECS的同时连接数4710左右,最高的时候。。 看到这个监控数据,我心里有点后悔啊,,早知道服务器不能降配,维持在4核8G就好了,,内存占用很稳定,,一直30%,感觉4核4G也能搞得住,为啥这CPU这么繁忙呢。。 我当时一直在纠结要不要 升级配置,升级成4C8G,但是现在正是投票的高峰器,这样做会直接影响线上业务。。 这时候我打开了数据表,看了看我之前猜测的一个可能的问题,就是每一次投票,都会写入一条log日志,每个人在点击 投票的时候,都会从这张表时获取 投票的状态,比如每人每天只能投一票的话,那么每次投票之前都在 从这张表里做一次查询,通过当前登录人的ID和被投票人的ID,还有时间,来判断 这个人投了几票,因为规则是每个人 每天最多给一个人投一票,每天最多10票。  之前所有字段都加上了索引,唯独这个person_id没有加索引 ,因为之前的cpu占用也一直没有超,所以也就没有从索引角度去考虑优化,到了这个时候,也没别的办法可用,直接把person_id加了索引 。  果不其然。 CPU占用直线下降,系统的负载也降低了,ECS的同时连接数 仍维持在1000-2000人之间。  ## 总结一下 经过了此次事件之后,涨了很多知识,其实这些知识 可能 很初级,但是在现实场景中用到了,会让人有很大的感触。 * 性能优化说高深也高深,说简单也简单,我这次这个肯定算是简单的了 * 性能的高低不是简单粗暴的给分配高配置的服务器和带宽,代码的质量和数据库的优化至关重要。 * 遇到问题要冷静分析,给出的答案要有依据,而不是凭感觉,当然有时候直觉也很重要。 * 2核4G的服务器,到底能经受住多大的并发,心里有底了,单纯只是投票这种简单的业务操作的话,5000人的在线应该能抗得住,当然内存可以再降降,2核2G也可以的,现在阿里还有活动2核2G3M的服务器,99块钱一年。 * 图片资源虽然不占用CPU和内存的消耗,但是占流量费啊,设计师给你发来的图片或视频一定要压缩压缩再压缩 !!
superadmin
2024年6月3日 11:48
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码