1. 如何提升App的穩(wěn)定性
Crash維度
性能維度
業(yè)務(wù)高可用維度
重在預(yù)防、監(jiān)控必不可少生兆。
思考更深一層难捌、重視隱含信息
長效保持需要科學流程
2. 高Crash率的破解之道
Crash相關(guān)指標(Crash率)
UV、PV
天訪問。 次訪問根吁。
Java native
啟動员淫、重點流程
影響最嚴重的Crash
結(jié)合客戶端容災(zāi)
增量、存量
增量Crash是新版本重點
存量Crash是持續(xù)啃的硬骨頭击敌。
優(yōu)先解決增量介返、持續(xù)跟進存量Crash
Crash率評價
千分之二以下。
Crash率萬分位 優(yōu)秀
Crash關(guān)鍵問題
盡可能還原Crash現(xiàn)場
堆棧愚争、設(shè)備映皆、OS版本挤聘、進程轰枝、線程名、Logcat
前后臺组去、使用時長鞍陨、App版本、小版本从隆、渠道
CPU架構(gòu)诚撵、內(nèi)存信息、線程數(shù)键闺、渠道包信息寿烟、行為日志
APM后臺聚合展示
Crash現(xiàn)場信息
Crash Top機型、OS版本辛燥、分布版本筛武、區(qū)域
Crash 起始版本、上報趨勢挎塌、是否新增徘六、持續(xù)、量級
采集層:錯誤堆棧榴都、設(shè)備信息待锈、行為日志、其它信息
處理層:數(shù)據(jù)清洗嘴高、數(shù)據(jù)聚合竿音、維度分類、趨勢對比
展示層:數(shù)據(jù)還原拴驮、維度信息春瞬、起始版本、其它信息
報警層:環(huán)比莹汤、同比快鱼、郵件、IM、電話
責任歸屬
專項小組輪值
自動匹配分配
處理流程全記錄
Crash治理方案
單個Crash處理方案
根據(jù)堆棧及現(xiàn)場信息找答案
找共性:機型抹竹、OS线罕、實驗開關(guān)、資源包
線下復(fù)現(xiàn)窃判、遠程調(diào)試
Crash率治理方案
解決線上常規(guī)Crash
系統(tǒng)級Crash嘗試Hook繞過
疑難Crash重點突破钞楼、更換方案
3. 移動端業(yè)務(wù)高可用方案建設(shè)
業(yè)務(wù)高可用重要性
高可用:性能 + 業(yè)務(wù)
業(yè)務(wù)高可用側(cè)重于用戶功能完整可用
業(yè)務(wù)高可用真實地影響收入
業(yè)務(wù)高可用方案建設(shè)
數(shù)據(jù)采集
梳理項目主流程、核心路徑袄琳、關(guān)鍵節(jié)點
Aop自動采集询件、統(tǒng)一上報
業(yè)務(wù)高可用總結(jié)
報警策略
閾值報警
趨勢報警
特定指標報警、直接上報
異常監(jiān)控
Catch代碼塊
異常邏輯
單點追查
需要針對性分析的特定問題
全量日志回撈唆樊,專項分析
兜底策略
配置中心宛琅,功能開關(guān)
跳轉(zhuǎn)分發(fā)中心(路由統(tǒng)一處理 跳到異常頁面)
4. 移動端容災(zāi)方案
容災(zāi)方案
災(zāi):性能、業(yè)務(wù)異常
傳統(tǒng)流程:用戶反饋逗旁、重新打包嘿辟、渠道更新,不可接受
容災(zāi)方案建設(shè)
功能開關(guān)
配置中心片效,服務(wù)端下發(fā)配置控制
針對場景:功能新加或代碼改動
統(tǒng)跳中心
界面切換通過路由红伦,路由決定是否重定向
eg:Native Bug 不能熱修則跳轉(zhuǎn)到臨時H5
動態(tài)化修復(fù)
熱修復(fù)能力〉硪拢可監(jiān)控昙读、灰度、回滾膨桥、清除
推拉結(jié)合蛮浑、多場景調(diào)用保證到達率
Weex、RN增量更新
安全模式
根據(jù)Crash信息自動恢復(fù)国撵,多次啟動失敗重置App
嚴重Bug可阻塞性熱修
異常熔斷:多次請求失敗則主動拒絕
5. 穩(wěn)定性長效治理
開發(fā)階段:
統(tǒng)一編碼規(guī)范陵吸、增強編碼功底、技術(shù)評審介牙、CodeReview機制
架構(gòu)優(yōu)化:能力收斂壮虫、統(tǒng)一容錯
測試階段:
功能測試、自動化測試环础、回歸測試囚似、覆蓋安裝
特殊場景、機型等邊界測試
云測平臺
合碼階段:
編譯監(jiān)測线得、靜態(tài)掃描
預(yù)編譯流程饶唤、主流程自動回歸
發(fā)布階段:
多輪灰度
分場景、緯度全面覆蓋
運維階段:
靈敏監(jiān)控
回滾贯钩、降級策略
熱修募狂、容災(zāi)方案
6. 穩(wěn)定性優(yōu)化模擬面試
1)你們做了哪些穩(wěn)定性方面的優(yōu)化办素?
用戶基數(shù)逐漸升高』銮睿卡頓 功能不可用性穿。
Crash優(yōu)化
性能穩(wěn)定性優(yōu)化
業(yè)務(wù)穩(wěn)定性優(yōu)化
2)性能穩(wěn)定性是怎么做的?
線下發(fā)現(xiàn)問題雷滚、優(yōu)化為主
線上監(jiān)控為主
Crash專項
3)業(yè)務(wù)穩(wěn)定性如何保障需曾?
數(shù)據(jù)采集 + 報警。 每一步流程 和監(jiān)控成功率 轉(zhuǎn)化率祈远。
異常監(jiān)控 + 單點追查呆万。
兜底策略
4)如果發(fā)生了異常情況结闸,怎么快速止損茴厉?
能力:功能開關(guān)(緊急關(guān)閉功能開關(guān))垫言、統(tǒng)跳中心
動態(tài)修復(fù):熱修分预、資源包更新。 RN醋寝、Weex
自主修復(fù):安全模式豆挽。
清除所有緩存,級別最高的時候 阻塞主線程充甚,一定要讓它達成熱修復(fù)之后再繼續(xù)。##### 1. 如何提升App的穩(wěn)定性