《A2--李洁--APP启动稳定性和链路优化实践.pdf》由会员分享,可在线阅读,更多相关《A2--李洁--APP启动稳定性和链路优化实践.pdf(45页珍藏版)》请在三个皮匠报告上搜索。
1、APP启动稳定性和链路优化实践李洁美团李洁美团 点评基础质量负责人在移动端CICD测试组件、动态化技术栈测试策略、APP URL合规、增长唤起等通用测试工具和监控能力建设上有较多实践经验。目录CONTENTS议题背景01 APP启动管控和治理02 启动稳定性保障03 启动用户体验提升04 展望未来05 01议题背景议题背景-APP启动重要性国内各APP的崩溃也会迅速冲上微博话题u据Dimensional Research的一项调查,61的用户希望APP在4秒内启动,而49的用户希望在2秒内响应输入。如果应用发生崩溃,53的用户会将APP卸载。u据bugsnag机构统计,84%的用户会在两次启动
2、崩溃后放弃打开APP,44%的用户可能直接卸载APP。uWhatsApp是一款可以免费拨打电话和发送短消息的通信软件,在全球拥有约20亿活跃用户,2022年10月因发生崩溃,当天Meta的股价下跌了0.7%。u用户能忍受的最长响应时间是5秒u如果响应时间超过5秒,50%移动应用用户会放弃u三分之一失望的用户会转向竞争对手的应用-蝉大师APP启动过程分析启动u广义:点击图标到上海品茶数据加载完毕u狭义:点击图标到Launch Image完全消失第一帧初始化项比如网络库、日志、Crash 捕获与上报、线程管理、热修复、配置下发、视频、直播、支付等APP启动能力现状和目标缺少监控2020年现状初始化项乱
3、无规范和管控标准APP启动变慢耦合严重,维护成本高目标稳快02APP启动管控和治理初始化项管控能力建设方向启动管控和治理-启动工程化启动项在App启动过程中需要完成的某项工作,我们称之为一个启动项。例如:某个SDK的初始化 某个功能的预加载 定位相关 异常监控 性能监控.控得住-玩转启动项增量启动项如何加入?启动项分组?业务映射关系?启动项重要性和依赖关系?启动项的启动时机?启动项启动工程化后,双端(Android、iOS)分别有xx启动项控得住-启动项分级依赖所有业务场景都需要,一般为重要基础能力,如网络初始化、监控、配置下发、日志系统等使用范围比较广,为某一类技术栈的初始化项,例如动态化框
4、架、模块化框架、接口框架初始化项等其他启动项启动项功能启动项功能注册进程注册进程启动项依赖启动项依赖启动项分级启动项分级CrashReportTaskCrash上报一级xxx1Taskxx初始化一级xxx2Task冷启动上报二级xxx3Task性能监控初始化二级xxx4Task静态模型初始化其他xxx5Task图片配置初始化其他xxx6TaskXx日志初始化二级xxx7Task网络库初始化一级xxx8Task预加载初始化其他xxx9Task账号初始化二级特定业务场景需要,例如消息、收藏、直播、支付初始化项等二级启动项一级启动项控得住-启动项分阶段加载(启动时机)进程创建启动项动态化容器首跳页面
5、系统行为包体大小相关xxms依赖定位接口请求耗时xxms启动项执行多启动项耗时xxms容器引擎加载JS动态下载xxms启动项Push唤起广告唤起桌面唤起页面标识启动项注册技术栈/页面级-启动项配置应用启动路由阶段次级页面首跳页面全部启动项页面级-启动项配置次级页面页面级-启动项配置控得住-自定义启动项组(启动时机)进程创建启动项动态化容器首跳页面次级页面启动项控得住-启动项准入卡控基于启动项能力的质量提升思考稳快03启动稳定性保障启动稳定性分析举例问题:xx年 x月x日 xx点xx到xx点05之间,大众点评App iOS 端爆发启动Crash,Crash总量xxW+,影响用户xxW+。原因:A
6、PP启动初始化模块化框架时,模块配置服务获取配置数据后触发异常,从而引发Crash。当时的可处理手段:配置回滚据统计崩溃发生最多的阶段是应用初始化阶段,点评APP有51.8%的Crash量是在用户启动阶段。启动高可用、容灾方案建设减少此类问题发生降低故障影响启动降级能力建设-方案设计启动降级能力建设-安全模式安全模式(小程序)兜底止损触发机制恢复机制启动降级能力建设-方案设计监控项告警阈值监控频次告警频次Crash增量告警单条Crashxx条/1分钟1分钟1分钟Crash总量告警单条Crash1.黑名单阈值xx/天2.常规阈值xx/天5分钟5分钟配置项说明总开关0-禁用启动项功能关闭1-禁用启
7、动项功能开启按黑名单摘除启动项数组,禁用在其中的启动项按启动等级降级禁用低于该等级的启动项启动演练提升APP稳定性-目标启动演练提升APP稳定性-可测性改进启动演练提升APP稳定性-方案流程启动演练提升APP稳定性-演练效果xx个演练解决问题0个近3年S4及以上启动问题X min内故障降级处理时长04启动用户体验提升提升用户体验助力APP增长增长获客需求,大量的广告投放优化启动速度提升用户体验12启动链路性能优化背景APP启动核心链路上海品茶内容页团单页POI页榜单页二跳页面后继页面启动链路核心链路桌面启动外部唤起xx个xx个xx个应用启动上海品茶加载次级页面网络启动项埋点启动项日志启动项图片库启动项
8、缓存启动项存储库启动项预加载启动项内存监控启动项端智能启动项地图启动项Push启动项图片监控启动项动态加载启动项直播启动项xx%xx%上海品茶秒开率xxxmsxxxms上海品茶曝光耗时桌面启动-启动项分阶段加载及结果秒开率:指页面打开时间小于等于1秒的次数比率外部唤起-启动时机管理网络启动项埋点启动项日志启动项缓存启动项直播启动项Web启动项安全签名启动项网络启动项埋点启动项日志启动项缓存启动项直播启动项Web启动项安全签名启动项外部唤起落地页不同!页面非必须启动项可以延迟加载吗?外部唤起-启动时机管理(延迟加载策略)网络启动项埋点启动项缓存启动项自研动态化启动项网络启动项埋点启动项小程序框架启动项缓
9、存启动项网络启动项埋点启动项Web启动项缓存启动项网络启动项埋点启动项缓存启动项RN启动项极限启动项组分技术栈1.自研动态化:xx个2.小程序框架:xx个3.Web页面:xx个4.RN框架:xx个自研动态化页面小程序框架页面Web页面RN框架页面内容搜索页图片库启动项富文本启动项外部唤起-启动时机管理页面越来越多启动项越加越多性能又开始劣化了能不能按照页面维度去执行启动项+自研动态化框架极限启动项组(xx个启动项)自研动态化框架页面外部唤起-自定义核心启动项组图片库启动项设备标识启动项Web启动项.网络启动项埋点启动项日志启动项缓存启动项Web图片库启动项设备标识启动项RN启动项.网络启动项埋
10、点启动项日志启动项缓存启动项RN框架图片库启动项小程序启动项设备标识启动项网络启动项埋点启动项日志启动项缓存启动项小程序框架图片库启动项动态化启动项设备标识启动项网络启动项埋点启动项日志启动项缓存启动项自研动态化框架技术栈维度核心启动项组页面维度核心启动项组图片库启动项设备标识启动项动态化启动项.网络启动项埋点启动项日志启动项缓存启动项内容搜索页预加载启动项设备标识启动项动态化启动项.网络启动项埋点启动项日志启动项缓存启动项必吃套餐页账号启动项设备标识启动项动态化启动项.网络启动项埋点启动项日志启动项缓存启动项大牌抢购页启动用户体验提升-增长投放场景应用投放URL举例:基础链接基础链接+启动项
11、组控制参数启动项组控制参数+数据数据统计参数统计参数+其他其他参数等参数等技术栈维度-自定义启动项优化结果xx个xx个应用启动&首跳次级页面网络启动项埋点启动项日志启动项图片库启动项缓存启动项动态化启动项预加载启动项内存监控启动项端智能启动项地图启动项视频启动项直播启动项.唤起率页面曝光耗时xx%xx%xxxmsxxxms页面维度-自定义启动项优化结果注:唤起率=页面PV/广告点击投放页面曝光耗时(前)曝光耗时(后)唤起率(前)唤起率(后)必吃团购详情页xxxmsxxxmsxx%xx%必吃套餐列表页xxxmsxxxmsxx%xx%大牌日活动页xxxmsxxxmsxx%xx%酒店频道页xxxmsxxxms-xx%当地人推荐页xxxmsxxxms-正在投放04展望未来启动稳定性和链路优化总结展望未来完善启动项能力全链路启动监控启动项动态配置短路径启动项优化能力建设全链路启动性能监控启动项能力应用自定义启动项能力应用在更多的业务上感谢聆听