一盾致、架構(gòu)演化
1、獨(dú)立型應(yīng)用:
功能特征:?業(yè)務(wù)簡(jiǎn)單荣暮,用戶操作體驗(yàn)簡(jiǎn)單庭惜,頁(yè)面量少
開(kāi)發(fā)團(tuán)隊(duì)特征:人數(shù)少,溝通方便穗酥,
業(yè)務(wù)特征:業(yè)務(wù)變化頻繁护赊,不穩(wěn)定
2、平臺(tái)型應(yīng)用:
功能特征:業(yè)務(wù)稍復(fù)雜砾跃,用戶操作體驗(yàn)稍復(fù)雜骏啰,頁(yè)面量增多
開(kāi)發(fā)團(tuán)隊(duì)特征:人數(shù)稍多,溝通成本已成為重要條件之一
業(yè)務(wù)特征:業(yè)務(wù)變化穩(wěn)定抽高,多增加新業(yè)務(wù)器一,少修改老業(yè)務(wù),業(yè)務(wù)相關(guān)性低
3厨内、生態(tài)型應(yīng)用:
功能特征:業(yè)務(wù)復(fù)雜祈秕、關(guān)聯(lián)性高,用戶操作復(fù)雜雏胃,頁(yè)面量大
開(kāi)發(fā)團(tuán)隊(duì)特征:多團(tuán)隊(duì)開(kāi)發(fā)请毛,溝通成本較高
業(yè)務(wù)特征:業(yè)務(wù)變化穩(wěn)定,多增加新業(yè)務(wù)瞭亮,少修改老業(yè)務(wù)方仿,業(yè)務(wù)相關(guān)性高
二、技術(shù)挑戰(zhàn)
1、業(yè)務(wù)復(fù)雜性
頁(yè)面多
流程復(fù)雜
業(yè)務(wù)關(guān)聯(lián)性增強(qiáng)
2仙蚜、設(shè)備多樣性
設(shè)備配置參差不齊此洲,高端設(shè)備、低端設(shè)備配置跨度大
網(wǎng)絡(luò)狀況參差不齊委粉,優(yōu)秀WIFI網(wǎng)絡(luò)與GPRS帶寬水平跨度大
三呜师、性能優(yōu)化指標(biāo)
1、啟動(dòng)時(shí)間
2贾节、運(yùn)行流暢度
3汁汗、卡頓時(shí)間、次數(shù)
4栗涂、流量
5知牌、重復(fù)下載
6、HTML加載速度
7斤程、耗電量
8角寸、內(nèi)存占用
9、GC
10忿墅、WIFI掃描
11扁藕、安裝包存儲(chǔ)
12、本地緩存
四球匕、最佳實(shí)踐
1纹磺、電量?jī)?yōu)化
系統(tǒng)兼容性帖烘、業(yè)務(wù)亮曹、技術(shù)基礎(chǔ)、Wakelock
耗電量增加指標(biāo):耗電排名秘症、耗電率
引起耗電量升高因素:CPU使用率照卦、定位服務(wù)、線程掛起乡摹、輪詢服務(wù)役耕、網(wǎng)絡(luò)連接服務(wù)
解決思路:dump所有線程,觀察線程消耗的CPU時(shí)間聪廉,從而定位到運(yùn)行線程的代碼
2瞬痘、流量?jī)?yōu)化
增量更新、網(wǎng)絡(luò)協(xié)議板熊、RPC
流量增加指標(biāo):網(wǎng)絡(luò)請(qǐng)求流量閾值
引起流量升高因素:網(wǎng)絡(luò)請(qǐng)求框全、遠(yuǎn)程資源下載
解決思路:hook所有請(qǐng)求,指定流量閾值干签,針對(duì)超過(guò)閾值的請(qǐng)求進(jìn)行協(xié)議優(yōu)化津辩、業(yè)務(wù)優(yōu)化
3、內(nèi)存優(yōu)化
對(duì)象創(chuàng)建、對(duì)象占用喘沿、內(nèi)存泄露
內(nèi)存異常指標(biāo):頻繁GC闸度、內(nèi)存消耗排名、長(zhǎng)時(shí)間使用內(nèi)存釋放率
引起內(nèi)存異常因素:內(nèi)存泄露蚜印、Bitmap莺禁、異常長(zhǎng)時(shí)間持有對(duì)象無(wú)法釋放內(nèi)存
解決思路:memtrace/hprof內(nèi)存分析,遍歷對(duì)象晒哄,釋放無(wú)用Bitmap睁宰,HTML頁(yè)面內(nèi)存消耗分析,對(duì)象池復(fù)用
4寝凌、存儲(chǔ)優(yōu)化
緩存同步策略柒傻、增量更新
存儲(chǔ)異常指標(biāo):內(nèi)存增長(zhǎng)過(guò)快,內(nèi)存只漲不降
引起存儲(chǔ)異常因素:緩存同步策略問(wèn)題
解決思路:緩存同步策略優(yōu)化较木、增量更新红符,盡早釋放無(wú)用緩存
5、應(yīng)用級(jí)架構(gòu)優(yōu)化
插件化伐债、模塊化预侯、服務(wù)化
架構(gòu)級(jí)異常:大中型應(yīng)用多業(yè)務(wù)開(kāi)啟長(zhǎng)連接、處理推送峰锁、處理即時(shí)聊天信息
引起架構(gòu)級(jí)異常隱私:應(yīng)用級(jí)架構(gòu)設(shè)計(jì)問(wèn)題萎馅,溝通不暢
解決思路:將應(yīng)用中的業(yè)務(wù)進(jìn)行模塊化設(shè)計(jì),降低功能與業(yè)務(wù)的耦合度虹蒋,參考iOS系統(tǒng)的設(shè)計(jì)思路糜芳,將諸如:推送、緩存魄衅、心跳等基礎(chǔ)服務(wù)功能從具體業(yè)務(wù)中獨(dú)立出來(lái)峭竣,使多個(gè)業(yè)務(wù)通過(guò)統(tǒng)一標(biāo)準(zhǔn)調(diào)用此類基礎(chǔ)服務(wù),提高架構(gòu)兼容性晃虫、穩(wěn)定性皆撩、擴(kuò)展性
五、穩(wěn)定性
1哲银、Crash優(yōu)化
指標(biāo):Crash率 0.1%扛吞、持久性閃退 < 0.001%
2、啟動(dòng)閃退
指標(biāo):?jiǎn)?dòng)時(shí)間
3荆责、啟動(dòng)卡死
指標(biāo):30s卡死
4滥比、ANR
指標(biāo):5sANR
六、超級(jí)App的運(yùn)維體系
1草巡、異常監(jiān)控
客戶端:性能守呜、電量型酥、流量、內(nèi)存查乒、穩(wěn)定性弥喉、異常統(tǒng)計(jì)上報(bào)
服務(wù)端:異常分析、提取特征玛迄、風(fēng)險(xiǎn)預(yù)測(cè)由境、自動(dòng)報(bào)警、狀態(tài)跟蹤
2蓖议、電量計(jì)算
系統(tǒng)級(jí)數(shù)據(jù)采集:BatteryStatsHelper -> BatteryServiceImpl -> batterystats.bin
電量消耗模型
維度:CPU虏杰,Wakeup,Wakelock勒虾,WIFI纺阔,Tcp,WIFIScan修然,Sensor
權(quán)重:power_profile.xml @ framework-res.apk
關(guān)鍵技術(shù)優(yōu)化:Androidv4.4之后笛钝,系統(tǒng)收掉電量權(quán)限。目前獲取電量辦法是模仿整個(gè)Android系統(tǒng)計(jì)算電量愕宋,即從BatteryStats.bin中獲取每一個(gè)維度的權(quán)重玻靡,將維度和權(quán)重結(jié)合就可以算出Android系統(tǒng)的耗電量。
3中贝、快速定位診斷
電量診斷:自動(dòng)收集CPU囤捻、Sensor、Wakelock的耗電數(shù)據(jù)邻寿、dump線程棧
流量診斷:自動(dòng)收集高流量url
閃退診斷:捕捉native閃退日志蝎土,內(nèi)存狀態(tài)日志
本文將不定期更新,敬請(qǐng)關(guān)注老厌。
參考文章:https://yq.aliyun.com/articles/59942?spm=5176.100239.blogcont69316.94.YliSMO
感謝:阿里云棲社區(qū)