@pockry
2016-08-25T16:47:35.000000Z
字数 1770
阅读 1906
APM
2016年8月18-19日,国内首届应用性能管理大会APMCon将在北京举行。360高级技术经理刘刚,将在大会上分享《手机卫士性能演进历程》,InfoQ对刘刚进行专访,了解他们在性能监控与优化方面的实践经验。
受访嘉宾
刘刚,360无线技术委员会委员,手机卫士开发leader,有着16年开发经验,有着丰富的客户端/服务器端/无线端的开发经验,对于新技术仍然保持着强烈好奇心。
InfoQ:360手机卫士的性能优化经历了哪几个阶段?
刘刚:我大概是在13年10月来到手机卫士,经历了手机卫士优化的3个阶段:
第一个阶段主要是插件化和拆分进程,这个阶段主要的目的是解决方法数和内存的问题。
第二个阶段功能模块插件化,这个阶段的目的解决两件事;
- 解决卡慢问题,因为代码模块化解耦后,主程序的代码(核心dex)减少,并且经过一定优化后,比所有竞品APK体积小,运行内存小,,第三个阶段主要是性能;
- 功能模块独立,用户可以按需下载,独立升级;
第三个阶段主要是性能监控常态化,这个阶段主要是通过AOP的手段,进行实时监控,持续进行内存、启动速度、电量、流量等优化。
InfoQ:对于手机卫士这种产品,在性能上有哪些优化点?
刘刚:手机卫士产品作为最常用的移动端产品,和其他移动端产品最大的区别是在非主动使用的情况下,在保证用户手机的安全性同时,要求我们在后台进程对于系统的影响做到最小,所以对于后台进程要做到占用更小的内存,更高效的执行速度,使用非轮询方式等。
对于代码检测,你们使用了哪些工具,是否自己开发了相关的工具?
刘刚:对于代码检查,我们使用Lint、findbugs和我们360自己独有的代码红线工具,其中findbugs我们进行了定制化的修改,添加了检测器,主要检查流关闭问题。,其中findbugs我们进行了定制化的修改。这里红线和findbugs定制是否可以具体介绍一下,或者提供介绍文章链接。
InfoQ:我看到你们使用AOP实现静态埋点,为什么使用这种技术?
刘刚:其实AOP和无痕埋点我们都有,我们AOP主要是做流量、电量等一些监控,这种不存在兼容性的适配问题,无痕埋点这种我们主要是用于启动速度,内存等一些监控,我们是根据监控的对象进行了不同的选型。
InfoQ:静态埋点如何保证最少资源消耗,如何做可扩展?
刘刚:我们使用静态埋点是采样的机制,有云控的开关和有效的监控期,另外在静态埋点处我们只是做了一个异步采样机制,并没有其他执行代码,这样基本上能保证较少的资源消耗,因为静态埋点的机制决定了,扩展性是相对较弱的,我们是通过预埋一些桩,在AOP里加了一些动态化的监控机制,通过下发插件或者云控指令的方式进行了一定程度的扩展。
InfoQ:对于实时的性能监控,你们有哪些手段?
刘刚:主要对于进程的冷热启动、Activity等四大组件的加载时间、线程和task的卡慢和内存监控、启动次数,具体的实现方式和原理都会在APMCon2016上进行分享。
InfoQ:对于移动应用的性能问题你们是否做了性能可视化,定义了哪些性能指标?
刘刚:我们做了性能可视化,这里是否可以扩展介绍下,如果不方便的话,那把这部分问题删掉。但一定要注意一点,移动端的设备性能差别非常大,性能指标和机型、ROM相关性特别大,像内存指标不同ROM、机型上差异很大,所以定义性能指标时一定和机型进行参考,我们的性能指标主要是包含内存、冷热启动时间、四大组件的加载时间、流量、电量等。
InfoQ:我看到你们使用了插件化技术,对于插件的性能监控和修复,与一般的应用相比有哪些特殊的地方?
刘刚:我们的插件都具有独立的可升级能力,修复只要利用插件升级即可,像热修复对于插件意义没有那么大。另外我们手机卫士的插件都是通过我们自己的编译后台生成的,具备所有的静态AOP和动态监控能力,和我们主程序没有什么特殊的地方。
InfoQ:在8月份的APMCon2016大会上,您将现场分享《手机卫士之性能演进历程》内容,具体会讲那些技术点呢?参会者能有哪些收益?
刘刚:会详细描述我们手机卫士的性能演进的过程,遇到的问题,解决方法以及对应的代码实现,主要包含代码检测、自动化分析、资源优化、实时性能监控、内存分析、磁盘分析以及动态热修复等技术点,相信大家还是有感兴趣的点。