在开发过程中我们要对app的稳定性有个正确的认识,并且要知道从哪些维度对app稳定性进行有效的优化.这里我们主要是对Crash进行介绍.
一.Crash 的相关指标主要包含以下几点:
1. UV、PV Crash率 2.Java、Native Crash率 3.启动、重点流程Crash率 4.增量、存量Crash率
Crash 业界定义方式:
1.UV crash主要是针对用户使用量的统计;统计一段时间了所用用户使用过程中发生崩溃的占比
2.PV使用户是用频率的统计;统计一段时间之内所有用户的启动次数当中发生崩溃的占比
3.启动Crash率在启动阶段app还没有完全打开就发生崩溃的占比 启动Crash是Crash分类中最严重的一类 对于客户端Crash要有容灾策略
UV Crash率=Crash UV/DAU
UV方便评估用户影响范围,结合PV
4.增量 存量Crash统计:
对于增量Crash的定义 :新增的Crash;存量Crash:老版本存在的Crash
对于Crash解决策略: 优先解决增量Crash 持续跟进存量Crash
对于Crash 率的评价:一个app 的java nav崩溃率之和在千分之二以下是合格的Crash率万分位才算是优秀的标准.
二.Crash 关键问题:
1.通过复现crash现场:
堆栈 设备 系统版本 进程 线程名 Logcat
前后台 使用时长 App版本 小版本 渠道
cpu架构 内存信息 线程数 资源包信息 行为日志
2.APM监控平台聚合展示
crash top机型 系统版本 分布版本 区域
crash 起始版本 上报趋势 是否更新 持续 量级
3.Ceash整体结构层次的划分:
采集层:错误堆栈 设备信息 行为日志 其它信息
处理层:数据清洗 数据聚合 维度分类 趋势对比
展示层:数据还原 维度信息 起始版本 其它信息
报警层:环比 同比 邮件 IM 电话
三.Crash治理方案(主要介绍容灾方案的建设):
1.安全模式
根据crash信息自动修复,多次启动失败重置app
严重bug可阻塞性热修
异常熔断:多次请求失败则主动拒绝
2.容灾的方案流程:
功能开关---统跳中心---动态修复---安全模式