记一次服务优化

最近公司有个项目,再某一次活动时,流量暴增,达到了1万QPS,因数据库、服务扩容不及时,停止服务近5分钟,受影响用户近20W。所以有了这一次优化。

目标:

  1、支持最大40000 QPS

  2、能够及时动态扩缩容。

 

分析原因:

  1. 流量在特定时间点暴增达到服务上面,流量来的太突然,没有提前预警。
  2. 这个服务之前流量较小,MySQL机器配置较低,无法承受大并发写入。
  3. 服务某些接口,没有接入缓存,直接查库。

 

优化思路:

  1. 限流。服务的网关层进行限流。
  2. 数据库升级配置,主库配置32C64G(此配置经压测大约可以支持2QPS的写),从库扩容多个节点。
  3. Redis集群扩容。将一些数据库缓存到Redis中,扩容节点分散储存。
  4. 添加本地缓存。
  5. 削峰,将一些封必要的写入操作,使用Kafka削峰,延迟写入。
  6. 优化Tomcat配置
  7. 优化数据库连接池配置
  8. 优化JVM参数,调整GC配置
  9. 调整流量报警监控。
  10. 调整自动扩容机制。

 

最终结果:

  MySQL 32C64G 1主10从。 实例POD,2C4G * 60台支持5WQPS

 

posted @ 2022-04-22 20:11  技术那点事儿  阅读(52)  评论(0编辑  收藏  举报