线上流量突增百万高可用保障方案

2023-05-04  本文已影响0人  雪飘千里

一:事前预防

1、预估系统瓶颈

1.1 梳理核心接口

1.2 评估核心接口最高的TPS

2、系统高可用保障措施

2.1、核心接口限流治理(不依外部接口)

2.2、核心接口超时治理、熔断兜底治理(依赖外部接口)

2.3、监控告警

2.4、应急预案准备

2.5、每日健康度巡检(每天早上9点)

2.5.1 错误日志检查

2.5.2 应用指标检查(CPU、内存fullgc、繁忙线程数)

2.5.3 中间件指标

2.5.4 数据库指标

2.2.5、 接口指标

2.2.6 核心业务功能巡查(比如会员中心、查券、查询折扣)

2.5.7 异常监控告警日志原因检查

二: 事中处理

1、应用重启

2、应用升配

应用升配,中间件升配,数据库生胚

3、扩容

4、流量控制

5、版本回滚

6、业务(影响系统性能)下线

三: 事后复盘

以一个P0级别故障项目复盘为例,说明

1、 事件回顾

2、问题分析及解决办法

问题分析:

  1. 运营当天配置了XX策略,每条策略大概有XXX个规则;
  2. 之前的策略数据都是存储在redis中,所以运营配置XX条策略生效以后,redis接收到的报文瞬间变得非常大,策略key快速升级为大key,从1kb变成60kb,客户端频繁请求redis大key,流量高达1.8G/s,很快系统的http线程池被打满请求无法响应,系统进入假死状态。

解决办法:

  1. 优化edis大key:事发当晚,针对redis大key场景,引入本地缓存作为一级缓存,优先从本地存读取数据,减少对redis中间件的压力,优化后redis运行比较平稳
  2. 增加系统异常预案处理:在配置中心增加动态关闭接口的开关,一旦出现系统将不可用的情况。立即打开开关,进行人工降级并返回兜庭数据,等待系统资源正常后再打开开关。

3、总结与反思

1、研发侧

  1. 对redis重度依赖,redis有细微的抖动,服务接口响应时间波动非常大,系统风险大;
  2. redis使用不规范,没有提前对redis大key作出预判,导致面对突发流量,系统扛不住;
  3. 没有形成一套标准的高井发和高稳定性的架构设计评审方案,由于xxx系统属于核心系统,每天请求的OPS很大,所以对于系统的稳定性设计要求极高,可能设计方案出现一点疏忽就会影响系统整体的稳定性;
  4. 性能压测没有真实模拟线上数据,导致压测结果有偏差,不能对研发同学优化性能做到精准支撑;

2、底盘运维侧:

目前我们所有的应用都已经上云,对集团底盘能力依赖较重,但集团提供的排查工具比较粗糙,没有顺手的工具可用,这里总结了几点如下:

3、产品运营侧:

4、行动与结果

1 研发测

2 底盘运维侧

3 产品运营侧

上一篇 下一篇

猜你喜欢

热点阅读