稳定性优化

稳定性优化

Crash 相关指标

  • UV Crash、PV Crash 率
    • UV Crash 率:一段时间内所有用户崩溃的占比
    • PV Crash 率:一段时间内所有启动次数崩溃的占比
  • Java、Native Crash 率
  • 启动、重点流程 Crash 率【最影响用户的 Crash】
  • 增量、存量 Crash 率

Crash 率评价

  • 必须在千分之二以下
  • 万分位为优秀

Crash 关键问题

  • 尽可能还原 Crash 现场
    • 堆栈、设备、OS版本、进程、线程名、Logcat
    • 前后台、使用时长、App版本、小版本、渠道
    • CPU 架构、内存信息、线程数、资源包信息、行为日志
  • APM 后台聚合展示
    • Crash 现场信息
    • Crash Top 机型、OS 版本、分布版本、区域
    • Crash 起始版本、上报趋势、是否新增、持续、量级

Crash 率治理方案

  • 解决线上常规 Crash
  • 系统级 Crash 尝试 Hook 绕过
  • 疑难 Crash 重点突破、更换方案

业务高可用

  • 异常业务流程监控
    • Catch 代码块:确实不会崩溃,但是业务不能正常执行,同样需要上传该 Catch 到的信息
    • 异常逻辑:本该正常流程的逻辑但是走到了另一条(else)分支,同样需要上传该异常逻辑的信息
  • 单点问题
    • 需要针对性分析的特定问题,全量日志回捞,专项分析
  • 业务不可用兜底策略
    • 功能支持配置,不可用时通过配置中心调整功能开关
    • 组件化路由分发中心进行拦截,不可用时不跳转或者跳转到统一的异常界面,如果网页H5有相同功能且支持手机端还可跳转到该H5

移动端容灾方案

移动端出现异常处理方案

  • 传统流程:用户反馈 -> 重新打包 -> 渠道更新 【这是不可接受的】
  • 动态热修复
    • 要做到热修复能力可监控、灰度、回滚、清除的能力
    • 要做到推拉结合、多场景调用,保证下发率
  • 安全模式
    • 根据 Crash 信息自动修复,多次启动失败重置 App
    • 严重 Bug 可以考虑使用阻塞性热修复,确保修复包正常下发了,才允许进入主界面

容灾方案实现:功能开关 -> 统跳中心 -> 动态修复 -> 安全模式

全流程 Crash 长效治理

  • 开发阶段
    • 统一编码规范、增强编码功底、技术评审、CodeReview 机制
    • 架构优化:能力收敛、统一容错,采取统一的路由跳转、统一网络库等基础功能,做到基础功能统一监控和容错
  • 测试阶段
    • 功能测试、自动化测试、回归测试、覆盖安装等
    • 特殊场景机型等边界测试
  • 合码阶段
    • 编译检测、静态扫描、CI门禁
    • 预编译流程、主流程自动回归,通过了才允许合入
  • 发布阶段
    • 多轮灰度、由小变多,争取以最小代价暴露最多问题
    • 分场景、维度全面覆盖,如针对某个地域或某个机型等更有可能出现问题的用户进行下发
  • 运维阶段【正式发版】
    • 依靠 APM 的灵敏监控
    • 针对异常情况考虑回滚、降级处理
    • 也可热修或使用预留的容灾方案