Web 服务突然被挤暴,如何有效分流

2021-10-25 17:12:31 +08:00
 kaka6

如题,一款微信小程序,平常日均活跃量 100 人左右,日均 pv 5K 以内 但没想到搞了个活动,访问人数直接上了 4 万+,把服务器挤爆,结果大家都无法访问,系统挂了

一台 Web 服务器(4C8G ,弹性 200M 带宽) + 一个 RDS Redis + 一个单机 RDS MySql 数据库(4C8G)

看服务日志,主要是数据库的 CPU 遇到瓶颈,直接上了 100%

临时数据库加到 8C 也不够,程序估计也是有问题,缺少合理的缓存,造成数据库访问频繁

加硬件,是简单粗暴的方式 优化程序,还需要从头计议

我想到做入口分流,大家有没有相关经验分享

就是我根据环境配置,同一时间只想服务好比如 5000 人,超过 5000 人,在外面等候

这样至少能保证一部分用户可用,不致于造成系统挂掉

本地性的小应用,日常访问量少,感觉还没到做微服务、中台、集群等层面上

所以想通过什么策略搞搞分流,至少在流量大时能保持一部分用户可用,会不会好做些

大家给给建议,谢谢!

3121 次点击
所在节点    程序员
25 条回复
ryalu
2021-10-27 13:45:51 +08:00
想啥限流分流都没啥用,治标不治本。最有效的方式是做读写分离,以及打开慢日志优化相关索引。
tmackk
2021-10-27 17:29:36 +08:00
@gzf6 你说的是装机猿?
kaneg
2021-10-27 20:18:26 +08:00
如果要限流,可以用 resilience 方面的库来做,可以限制并发,限制时间段内访问的次数,错误超过设定后丢弃部分请求等。比如 Java 的 resilience4j.
gzf6
2021-10-27 22:51:42 +08:00
@tmackk 对,他前两天不是说爆了么
huangzxx
2021-10-28 02:00:29 +08:00
可以先限流,上 waf 或者 nginx limit_req 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/810416

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX