记一次服务优化
最近公司有个项目,再某一次活动时,流量暴增,达到了1万QPS,因数据库、服务扩容不及时,停止服务近5分钟,受影响用户近20W。所以有了这一次优化。
目标:
1、支持最大40000 QPS
2、能够及时动态扩缩容。
分析原因:
- 流量在特定时间点暴增达到服务上面,流量来的太突然,没有提前预警。
- 这个服务之前流量较小,MySQL机器配置较低,无法承受大并发写入。
- 服务某些接口,没有接入缓存,直接查库。
优化思路:
- 限流。服务的网关层进行限流。
- 数据库升级配置,主库配置32C64G(此配置经压测大约可以支持2QPS的写),从库扩容多个节点。
- Redis集群扩容。将一些数据库缓存到Redis中,扩容节点分散储存。
- 添加本地缓存。
- 削峰,将一些封必要的写入操作,使用Kafka削峰,延迟写入。
- 优化Tomcat配置
- 优化数据库连接池配置
- 优化JVM参数,调整GC配置
- 调整流量报警监控。
- 调整自动扩容机制。
最终结果:
MySQL 32C64G 1主10从。 实例POD,2C4G * 60台支持5WQPS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)