一App性能概览与平台化实践
1性能优化难题:
1性能表现差
app启动慢、卡顿、丢帧;
内存占用高、抖动频繁;
耗电、网络请求慢;
崩溃率、异常率高。
2线上问题无从追查
如何保证异常感知灵敏度;
如何复原案发现场(异常场景不复现);
如何快速止血成功。
3性能优化长期开销大
如何扼杀问题于萌芽;
优化效果如何长期保持。
总结:性能表现好、线上问题易追查、长期表现好
2项目自建APM,性能优化的演变
项目初期
只关心崩溃率,不采集性能数据;
没有性能检测、优化方案;
没有排查问题手段。
项目壮大期
指标采集,不够全 深入
接入成熟的APM,排查手段单一
线下检测、优化。方案不成型。
项目成熟期
重点关注性能问题,数据丰富,手段多样化;
线上线下一整套完整的解决方案(重点);
自建APM,新产品可以快速接入。
*线上线下:
误区:对线上不重视。场景是有误差的。
侧重点不一样:线下预防、线上监控。
方案不同,线下可用黑科技。
为什么要自建APM
成熟的APM通用,但不满足个性化要求。
外部APM与内部系统难打通,带来的时间成本。
数据必须掌握在自己手中。
3业内优秀的平台化实践
Crash收集平台
Bugly为代表:
1数据采集、上报成功率较高
2包含Java、Native崩溃(比较复杂)
3建议项目初期接入
商业级APM平台
听云为代表
1通用的性能解决方案,数据采集完善
2方便接入,但不满足个性化需求,数据隐患
3建议性能优化不完善时接入
自建解决方案
美团、携程、360等
1贴合自身业务特点,满足定制化需求
2数据安全
4App性能概览与平台化实践模拟面试
注意事项
不仅仅是技术考察;
想上台阶不能只埋头做技术(语言表达、深入思考)。
答题套路
找答案:立足于项目的整个周期;
讲案例:找到普遍痛点;
超预期:体现你和别人的区别。
具体问题
1你们为什么要做性能优化?
想看你在项目中角色、你们资源分配是否合理。
答:
体验差影响核心指标(卡顿--修复--用户留存)
线上问题追查困难
降低性能优化的长期开销:将性能优化平台化与工具化!将性能优化平台化与工具化!将性能优化平台化与工具化!
2介绍一下你们的性能平台
答
交代背景 不同阶段表现不一样的
具体讲解 项目初期只采集Crash;项目壮大期接入成熟的APM;项目成熟期自建APM。实现定制化采集和预警。
3为什么要自建APM,比商业级的好在哪
答
需求层面 商业APM不满足个性化需求的例子。(启动阶段商业apm只能告诉打的数据启动时长,我们想知道application和activity各自时间)
效率层面 查找问题时非常麻烦
数据安全 暴露核心数据
从长期看是节约资源的。