写点什么

专访刘刚:360 手机卫士的性能监控与优化

2016 年 8 月 09 日

作为一款移动端产品,除了要保证安全性之外,手机卫士还需要考虑尽量减少对手机资源的消耗,而要做到这些,360 手机卫士对于自身的性能优化、性能监控,以及对不同产品的适配问题,有哪些改进之处值得我们借鉴呢?

2016 年 8 月 18-19 日,由极客邦、InfoQ 和听云联合主办的 APMCon2016 中国应用性能管理大会将在北京举行(现在报名,享8 折优惠),聚焦当前最为关键的移动端、Web 端和Server 端的性能监控和管理技术。

本届大会,我们有幸邀请到了360 手机卫士高级技术经理 刘刚,前来分享《手机卫士之性能演进历程》的内容,会详细地介绍Android 端手机卫士的性能优化之路,如何做到对系统故障的预防、监控、诊断、响应等技术细节。

InfoQ:360 手机卫士的性能优化经历了哪几个阶段?

刘刚:我大概是在 2013 年 10 月来到手机卫士,经历了手机卫士优化的 3 个阶段:

第一个阶段主要是插件化和拆分进程,这个阶段主要的目的是解决方法数和内存的问题。

第二个阶段功能模块插件化,这个阶段的目的解决两件事:

  1. 解决卡慢问题,因为代码模块化解耦后,主程序的代码(核心 dex)减少,并且经过一定优化后,比所有竞品 APK 体积小,运行内存小;
  2. 功能模块独立,用户可以按需下载,独立升级;

第三个阶段主要是性能监控常态化,这个阶段主要是通过 AOP 的手段,进行实时监控,持续对内存、启动速度、电量、流量等优化。

InfoQ:对于手机卫士这种产品,在性能上有哪些优化点?

刘刚:手机卫士产品作为最常用的移动端产品,和其他移动端产品最大的区别是在非主动使用的情况下,在保证用户手机安全性的同时,要求我们在后台进程对于系统的影响做到最小,所以对于后台进程要做到占用更小的内存,更高效的执行速度,使用非轮询方式等。

InfoQ:对于代码检测,你们使用了哪些工具,是否自己开发了相关的工具?

刘刚:对于代码检查,我们使用 Lint、findbugs 和我们 360 自己独有的代码红线工具,其中 findbugs 我们进行了定制化的修改,添加了检测器,主要检查流关闭问题。

InfoQ:我看到你们使用 AOP 实现静态埋点,为什么使用这种技术?

刘刚:其实 AOP 和无痕埋点我们都有,我们 AOP 主要是做流量、电量等一些监控,这种不存在兼容性的适配问题,无痕埋点这种我们主要是用于启动速度,内存等一些监控,我们是根据监控的对象进行了不同的选型。

InfoQ:静态埋点如何保证最少资源消耗,如何做可扩展?

刘刚:我们使用静态埋点是采样的机制,有云控的开关和有效的监控期,另外在静态埋点处我们只是做了一个异步采样机制,并没有其他执行代码,这样基本上能保证较少的资源消耗,因为静态埋点的机制决定了,扩展性是相对较弱的,我们是通过预埋一些桩,在 AOP 里加了一些动态化的监控机制,通过下发插件或者云控指令的方式进行了一定程度的扩展。

InfoQ:对于实时的性能监控,你们有哪些手段?

刘刚:主要对于进程的冷热启动、Activity 等四大组件的加载时间、线程和 task 的卡慢和内存监控、启动次数,具体的实现方式和原理都会在 APMCon2016 上进行分享。

InfoQ:对于移动应用的性能问题定义了哪些指标?

刘刚:移动端的设备性能差别非常大,性能指标和机型、ROM 相关性特别大,像内存指标不同 ROM、机型上的差异很大,所以定义性能指标时一定和机型进行参考,我们的性能指标主要是包含内存、冷热启动时间、四大组件的加载时间、流量、电量等。

InfoQ:我看到你们使用了插件化技术,对于插件的性能监控和修复,与一般的应用相比有哪些特殊的地方?

刘刚:我们的插件都具有独立的可升级能力,修复只要利用插件升级即可,像热修复对于插件意义没有那么大。另外我们手机卫士的插件都是通过我们自己的编译后台生成的,具备所有的静态 AOP 和动态监控能力,和我们主程序没有什么特殊的地方。

InfoQ:在 8 月份的 APMCon2016 大会上,您将现场分享《手机卫士之性能演进历程》内容,具体会讲那些技术点呢?参会者能有哪些收益?

刘刚:会详细描述我们手机卫士的性能演进的过程,遇到的问题,解决方法以及对应的代码实现,主要包含代码检测、自动化分析、资源优化、实时性能监控、内存分析、磁盘分析以及动态热修复等技术点,相信大家还是有感兴趣的点。

InfoQ:感谢刘老师接受我们的采访,期待您在 APMCon 上的精彩演讲。

关于受访嘉宾

刘刚,360 手机卫士高级技术经理。360 无线技术委员会委员,手机卫士开发 leader,有着 16 年开发经验,有着丰富的客户端 / 服务器端 / 无线端的开发经验,对于新技术仍然保持着强烈好奇心。

2016 年 8 月 09 日 03:162478
用户头像

发布了 164 篇内容, 共 90.9 次阅读, 收获喜欢 380 次。

关注

评论

发布
暂无评论
发现更多内容

Kafka架构介绍

架构精进之路

kafka 七日更 28天写作 2月春节不断更

如何快速上手 angular.js

华为云开发者社区

html Vue 数据 angular js

5步教你将MRS数据导入DWS

华为云开发者社区

数据 MRS GaussDB 集群 DWS

淘宝的商品中心和类目体系是怎么设计的

邴越

阿里 模型 电商 架构· 业务

图扑物联助力打造现代化智能港口

一只数据鲸鱼

物联网 工业4.0 组态软件 智慧港口

面试加分项!我在美团Android研发岗工作的那5年,系列篇

欢喜学安卓

android 程序员 面试 移动开发

面试加分项!零基础如何成为高级Android开发,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

互助系统软件开发,互助app开发

luluhulian

您的《操作系统线程模型总结》请查收。

后台技术汇

28天写作 2月春节不断更

以终为始:28天打卡输出复盘

熊斌

个人成长 写作平台 28天写作

GrowingIO SaaS 产品 CI/CD 实践 (一)

GrowingIO技术专栏

ci SaaS CD

【春节不远行,云上过大年】来华为云社区,接任务领新年红包啦···

华为云开发者社区

华为云

为您收录的操作系统系列 - 进程管理(中篇)

Arvin

操作系统 进程 同步

Spark Shuffle 内部机制(一)

hanke

大数据 spark 开源 大数据平台

统一数据管理工具——CloudQuery v1.3.3 上线!

CloudQuery社区

数据库 运维 开发工具 dba 数据库管理工具

《iOS面试简历技巧解析》

ios 面试

宗谱链,数字化区块链宗谱链传承家族文化

WX13823153201

短信验证码被刷怎么办?java 短信验证码防刷策略分析

香芋味的猫丶

黑客 短信防刷 短信验证码 短信防轰炸 短信防火墙

区块链知识产权保护解决方案,区块链存证解决方案

135深圳3055源中瑞8032

Spring Boot Admin 集成诊断利器 Arthas 实践

阿里巴巴云原生

Java Docker 容器 云原生 Arthas

民进昆明市委:建议利用区块链技术优势在昆明打造金融应用平台

CECBC区块链专委会

金融 金融区块链

“新内容 新交互” 阿里云全球视频云创新挑战赛正式开启!

阿里云视频云

阿里云 音视频 应用 音视频算法

RocketMQ-Spring 毕业两周年,为什么能成为 Spring 生态中最受欢迎的 messaging 实现?

阿里巴巴云原生

Docker 容器 微服务 云原生 API

区块链+电力,又擦出什么新火花?

CECBC区块链专委会

区块链

2021年 区块链最火的app爱打卡

v16629866266

徒手撸一个Spring Boot中的starter

田维常

springboot

今年我读了四个开源项目的源码,来分享下心得

yes的练级攻略

源码 面试 后端

16张图带你吃透Redis架构演进

Kaito

redis 架构 高性能

区块链终将彻底改变医疗行业,但哪些因素制约当前的采用?

CECBC区块链专委会

区块链

源中瑞智慧社区解决方案---助推平安小区建设

135深圳3055源中瑞8032

一周信创舆情观察(1.25~1.31)

统小信uos

专访刘刚:360手机卫士的性能监控与优化-InfoQ