应急恢复策略 常见应急恢复策略

常见应急恢复策略

应急恢复策略 / 应急恢复策略/常见应急恢复策略.md

1 资源不足造成服务驱逐宕机恢复

常见针对问题:

text
1. k8s的node节点资源不足,驱逐部署的pod服务
2. node节点资源使用率过高,部署的pod有被驱逐风险

处理措施:

text
1.1 确认服务的配置合理,没有过大的资源申请配置。如配置不合理,请先调整pod部署配置。
1.2 查找集群中负载、资源使用率较低的节点,通过给pod增加部署标签等方式,让pod部署调度到指定node.
   如增加 nodeSelector 或 nodeName等方式。

2 内存不足,OOM等异常时快速恢复

常见针对问题:

text
1. OOM宕机异常
2. 内存增高有宕机分析的服务
3. 服务yaml部署未按照推荐配置(低于推荐配置)时
4. 元空间不足,metaspaceOOM
5. 业务高峰导致内存不足等

处理措施:

text
修改对应异常服务的部署模板,做以下调整(调整需参考服务推荐配置和客户使用量等综合分析)
1、如果为堆空间OOM,调整部署模板中java启动参数配置中: -Xms -Xmx ; 如果为元空间不足,调整java启动参数中: -XX:MetaspaceSize -XX:MaxMetaspaceSize 
一般可再原配置基础上调30%-50%
2、还需同步调整部署yaml文件,按照java启动参数的调整,同样增加yaml中资源限制部分:
        resources:
            limits:            
              memory:  #根据java配置中增加适当调整
            requests:
              memory:  #根据java配置中增加适当调整

3 cpu高负载快速恢复

常见针对问题:

text
1. 异常业务导致的cpu飙高
2. 服务cpu资源分派不足
3. 其他(业务逻辑,线程排队等)

处理措施:

text
1、如果确认为异常业务导致,可优先考虑暂停或中断该业务;如无法中断则需联系研发处理
2、如果明确资源不足问题,可调整服务部署yaml中cpu配置:
       resources:
            limits:
              cpu:              
            requests:
              cpu: 
    调整可按照原始配置的 30%-50%幅度增加
          

4 业务高峰导致问题快速恢复

常见针对问题:

text
1. 常见高峰业务,如并发登录(早高峰)
2. 抄送全员的流程代办
3. 大批量公文转换等

处理措施:

text
业务高峰问题,针对不同问题可能需要研发确认最终处理策略。
下面为常见的业务高峰应急策略
1、增加高负载服务的节点,比如 原来2个 ctp-user 服务扩容为 4个服务节点。
2、增加服务的配置,提高java 内存配置 ,提高部署yaml中 limit限制等          

5 慢sql快速恢复

常见针对问题:

text
1. 大表查询
2. 无索引或索引失效等
3. 服务异常/主机异常
4. 连接池不足,导致慢(往往由于业务量增加)

处理措施:

text
1、如果为单个慢sql,可联系研发确认,是否可再数据库层面kill 该查询连接。
2、如果无索引或索引失效,可通过快速分析,优先补对应表的索引
3、如果为数据库服务异常,可考虑重启或联系DBA运维
4、如果为数据库服务器异常,一般需要联系客户运维支持,或增加机器资源,或重启机器等(需要客户运维授权确认)  
5、如果确认为服务数据库连接池不足导致的慢,可通过适当调整nacos中数据库连接池配置进行修复
seeyon:
  datasource:    
    initial-size: 
    min-idle: 
    max-active: 
    max-wait: 3000
  针对不同服务调整可能联系对应服务研发,咨询推荐配置
6、如果是业务激增导致连接池线程不足问题,可以考虑增加服务负载节点,增加pod数。

6 慢redis快速恢复

常见针对问题:

text
1. redis大key
2. redis服务异常/主机异常

处理措施:

text
1、如果为单个key操作慢,可联系研发确认是否可直接删除该redis的key进行快速修复。
2、如果为redis服务异常,可考虑重启或联系运维
3、如果为redis服务器异常,一般需要联系客户运维支持,或增加机器资源,或重启机器等(需要客户运维授权确认)  

7 慢dubbo快速恢复

常见针对问题:

text
1. 其他关联处理逻辑慢导致的dubbo慢
2. 业务激增导致的dubbo慢

处理措施:

text
1、其他关联处理慢导致的问题,通过其他对应应急措施处理。
2、如果为为业务激增导致的dubbo处理慢,可以考虑适当增加服务dubbo的线程数配置或增加pod数量。
  修改nacos中dubbo配置的线程数如下:
  seeyon:
   dubbo:
    provider:
      core-threads: 
      max-threads: 
      queue: 10
    consumer:
      share-connections: 
      queue: 10
  联系研发,根据服务特点,适当增加dubbo相关线程配置

8 数据库相关问题快速恢复

常见针对问题:

text
1. 数据库服务异常
2. 数据库服务连接池不足

处理措施:

text
1、如果发现数据库服务异常,如夯死。可优先kill 当前异常查询或sql操作的连接,确认是否恢复。
2、如果出现数据库连接数不足,可扩展(调大)数据库最大连接数据。

日常预防建议

  • 建立前端、网关、应用、中间件、节点的统一监控。
  • 核心接口建立 P95/P99 延迟告警。
  • 建立数据库慢 SQL、Redis 慢命令、Kafka Lag 告警。
  • 建立 Pod 重启、驱逐、OOM、节点压力告警。
  • 发布必须保留回滚方案。
  • 高峰业务前做容量评估与压测。