写点什么

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

  • 2016-08-09
  • 本文字数:1804 字

    阅读完需:约 6 分钟

作为一款移动端产品,除了要保证安全性之外,手机卫士还需要考虑尽量减少对手机资源的消耗,而要做到这些,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-08-09 03:166214
用户头像

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

关注

评论

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

MES系统如何实现生产车间的实时监控、精准调度

万界星空科技

工业互联网 mes 工业自动化 万界星空科技mes MES、

AB Micro850笔记 485串口插件 2080-SERIALISOL

万里无云万里天

自动化 PLC 工厂运维

速速收藏!这些2024年上映的AI电影与短剧,申请加入你的国庆假期宅家计划!

可信AI进展

5.3K Star,轻量级联想拯救者工具箱

GitHub指北

C#

高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇二)

肖哥弹架构

maven 效能

AB Micro850笔记 热电阻热电偶扩展模块 2085-IRT4

万里无云万里天

自动化 PLC 工厂运维

PLC笔记 知识点汇总 day3

万里无云万里天

PLC

linux下vsode超级用户运行

百度搜索:蓝易云

AB Micro850笔记 使用ccw粗略了解PLC信息

万里无云万里天

自动化 PLC 工厂运维

API 数据接口:使用操作流程与安全指南

Noah

Docker启动失败报错Failed to start Docker Application Container Engine解决方案

百度搜索:蓝易云

万界星空科技 MES数据的集成平台

万界星空科技

系统集成 mes 万界星空科技mes 生产管理MES系统

使用终端MobaXterm连接Centos

百度搜索:蓝易云

MyBatis获取参数值的两种方式#{}和${} 以及 获取参数值的各种情况

百度搜索:蓝易云

AB Micro850笔记 更新固件版本

万里无云万里天

自动化 PLC 工厂运维

架构误区系列21:模型的边界和流式处理

agnostic

领域模型 模型边界

一种绕过Rust借用检查和不可变性的方法

SkyFire

rust 借用检查

03MyBatis-Plus中的常用注解

百度搜索:蓝易云

超实用!2024年10款免费项目管理系统全解析

爱吃小舅的鱼

项目管理 免费

如何挑选适合的项目可视化管理系统?十大优选方案揭晓

爱吃小舅的鱼

项目管理 可视化

AB Micro850笔记 工程应用经验总结

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 三种编程方式 梯形图 功能块 结构化文本

万里无云万里天

自动化 PLC 工厂运维

8.9K Star,开源自托管离线翻译引擎

GitHub指北

Python

5.8K Star,Microsoft 官方开源电商平台

GitHub指北

C#

网页缓存清理工具Privatus for Mac

Mac相关知识分享

PLC笔记 知识点汇总 day2

万里无云万里天

PLC 电工

localhost与127.0.0.1傻傻分不清楚,区别详解来了

陆通

AB Micro850笔记 上传与下载

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 使用ccw了解扩展与插件信息

万里无云万里天

自动化 PLC 工厂运维

6.1K Star,简简单单的看直播

GitHub指北

dart

网页也能跑大模型?

蛋先生DX

AI 浏览器 webassembly 大模型 onnxruntime-web

专访刘刚:360手机卫士的性能监控与优化_后端_徐川_InfoQ精选文章