• 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
     
     
     
      
     
     
     
     
     
     
  • 相关阅读:
    centos 7 安装vsftpd
    Goland 使用插件一键发布Docker到线上centos服务器
    Docker alpine 添加bash+修改时区发布镜像到docker.io
    centos 7 nginx 配置Let's Encrypt证书,并自动更新
    centos 7 源码方式安装nginx(1.16.1) + ssl + 阿里证书配置
    centos nginx 卸载
    influxdb time duration literal
    阿里云标准-Redis安全基线检查
    配置systemctl(zookeeper、hadoop、redis)
    【转】Hadoop2.7.7 API: yarn-site.xml 解析
  • 原文地址:https://www.cnblogs.com/huilei/p/12369815.html
Copyright © 2020-2023  润新知