• BUG解决方案


    1、并发问题
    离线计算任务 为了加快计算的速度
    线程池使用 ExecutorService.newFixedThreadPool() 无界队列 导致jvm内存频繁gc STW 雪崩
    jstack分析堆栈 VMthread
    jmap分析 堆的占用 任务队列对象
    ThreadPoolExecutor()
    改进:
    服务隔离
    & 线程池参数改进
    & 监控报警
    & 松耦合设计 超时时间。熔断降级策略
     
    2、缓存问题
    穿透  击穿  雪崩
    项目:特价机票
    高并发项目 接口层依赖缓存 数据持久化低价数据db
    穿透:
    攻击访问不存在的数据或冷门数据
    null + 短过期时间
     
    击穿:
    热点key失效,高并发请求打到db
    分布式锁,保证单点加载
     
    数据强一致性
    crm项目
    过期时间 + mq + databus
    mq和databus互备
     
    3、mq问题 消息堆积
    Mq消费某个topic的消息,处理的时候需要调用第三方接口,第三方接口变慢导致broker消息的堆积
    优化:
    1、监控报警
    2、细化消息处理逻辑。做到超时、熔断降级策略、松耦合
    3、动态开关。支持零时增加消费能力
     
     
    4、db问题
    a、慢查询
    做好sql review
    索引review
    OLAP 和 OLTP 隔离
     
    b、主从延迟,主库写入qps瞬时太高,导致主从延迟 数据不一致
    代码问题:避免瞬时大量写入,优化方案
    业务自身增长:容量规划、分库分表
     
    5、jvm问题
    a、gc
    频繁gc导致load高
    ygc 5s一次 1次50ms
    jvm参数设置 比例 新老:1:2 eden、幸存者:1 1 8
    循环new对象
    &
    大对象导致gc
    避免业务大对象
     
    6、服务化
    a 超时问题导致雪崩
    超时时间设置不合理、重试策略不合理(fail fase etry) 
     
    b 缺少容错和降级、开关
    自动开关,根据阈值
    手动开发 low
     
     
     
      
     
     
     
     
     
     
  • 相关阅读:
    java包和jar包
    java异常总结
    java异常练习2
    java中的异常处理机制_函数覆盖时的异常特点
    React(三)TableBar,ToDoList,Redux案例
    React(二)组件通信
    React(二)组件通信
    React(一)起步
    React(一)起步
    Vue(二)进阶
  • 原文地址:https://www.cnblogs.com/huilei/p/12369815.html
Copyright © 2020-2023  润新知