专栏首页IT大咖说干货 | 沪江高级安卓工程师徐宜生:移动端APM性能监控

干货 | 沪江高级安卓工程师徐宜生:移动端APM性能监控

视频内容

徐宜生,现任沪江高级Android开发工程师,著有《Android群英传》《Android群英传:神兵利器》两书,CSDN博客专家,慕课网Android讲师,活跃于Android社区,喜欢整洁的代码和简洁的架构,乐于拓展新的技术和知识,热衷于分享自己的经验和感悟。

我今天讲的题目是移动端APM性能监控。我们把APM系统定位为对应用的性能、可靠性进行线上的监控和预警的机制,通过APM系统来完善和统一整个流程,让我们去发现分析并解决新的问题,这是整个APM存在的意义。

APM系统的作用有哪些

一、监控线上APP的质量,对崩溃和异常数据进行分析,这是APM系统最大的作用。通过这些数据来了解APP线上用户在使用时是否存在问题。

二、通过数据的分析提前预警可能大范围爆发的问题。利用数据监控发现某一段时间部分异常的数据量有上升的趋势,提前对它问题进行预防。

三、通过后端优化负载,提升服务器性能,让APP性能得到提升。

APM系统在后端的实践

APM系统是前后端都非常复杂的一整套系统。这里主要讲后端上的实践。这里列举几个APM技术上实现的难点。

1、Native、Hybrid混合编程对数据采集的影响。最重要的问题是Android系统的碎片化。

2、如果通过后端SDK的方式去监测性能,对诉主来说性能是有一定的影响,同时APP介入APMSDK的拓展性、可制定性都是我们需要考虑的。

3、APM后端数据分析,前端负责采集性能数据,采集好之后把性能数据上报给服务器,在后端做可试化的分析,从数据里面找到潜在存在的问题,这是比较大的难点。

4、性能数据监测链路太长。APP本身有很多界面以及复杂的网络请求,从服务器里面分析数据返回数据再重现展示,在链路中每一步都可能发生新的问题。

5、不同的性能日志互通比较困难。在前端和后端都有自己的日志体系,但没有方案能将这些日志串联起来。

APM系统性能监控的几个维度

第一种 内存

它直接影响了整个APP的交互体验,主要是APP使用的流畅度。除了流畅度以外还会影响到APP的内存和ROM对APP后台状态的管理。内存主要通过四方面来判断:内存峰值、内存均值、内存抖动、内存泄露。

第二种 CPU

CPU也是APM监控的重点。CPU是整个安卓手机里面比较重要的资源体系,它会影响用户使用APP的发热和卡顿。

第三种 APP启动时间

启动时间有三个,分别是冷启动时间、热起动时间,页面渲染时间。

第四种 UI性能

是比较重要的一个部分,带给用户最直观的感受。一个APP如果特别卡的话,很可能会被用户弃用。UI性能的重要性主要表现在重绘的性能、滚动帧率还有ANR以及页面渲染时间。

第五种 耗电量

现在手机电量能否支撑一天是人们最基础的需求,APP不能特别耗电。耗电主要分为耗电量和发电量。如果在使用APP的时候明显有手机发热现象,这是非常不可取的。

第六种 网络性能

现在大部分APP都要联网。联网会不可避免地带来网络上的漏洞和问题,这就需要我们去监控。

第七种 用户的行为路径

就是一个用户在使用这个APP时做的操作。通过监测用户的使用路径可以了解用户都使用了哪些方面。

APM平台的性能监测

APM平台分为两种方式,一个是客户端的性能监测SDK,一个是PC端的性能监测,它们各有利弊。线上阶段可以通过客户端的性能监测SDK,利用APP做性能的监控。优点是不受设备限制,缺点是宿主APP代码有侵入,对性能有一定的影响。在内测方面会通过PC端的性能监测,主要借助APP的命令做性能的监控。它的有点是不影响性能,并可以测试竞品,做出对比。但是唯一的缺点就是它需要连接APP,限定了做测试的范围。

关于APM的进一步优化

1.与其他相结合。结合AI,结合现在比较火的人工智能的方式去分析数据的Pattem。借助AI找出数据之间的观点,帮助我们更高效地分析性能问题。

2.本地异常数据的监控算法。如果APM的SDK导致了整个APP的性能问题,我们需要有一些调度算法,更智能地去控制。

3.服务端指令控制。服务端指令控制是收集日志更精确的方法,通过服务端指令控制,利用服务端主动搜索信息或打开开关做监控,了解到更详细的性能信息来排查问题。

4.自动化测试平台对接。APM系统在内测方面会通过PC端的方式做性能监控,也利用APP方式做性能监控。

本文分享自微信公众号 - IT大咖说(itdakashuo)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android 关于移动互联网寒冬和个人核心竞争力的看法

    移动互联网寒冬 关于 Android 市场需求,其实从前年开始 Android 就处于寒冬的境地,最直观的标志就是,工作不那么好找了。因为前几年移动互联网开始流...

    用户1269200
  • Android P发布首个开发者预览版:新增多摄像头API,室内定位优化等

    近日、谷歌推出了首个Android P开发者预览版,可以在Pixel智能手机上安装该更新。新系统的亮点包括通知栏的改进、室内定位的优化、适配类似iPhone X...

    BestSDK
  • Android之Intent用法全面总结

    [代码] 调用拨号程序 // 给移动客服10086拨打电话 Uri uri = Uri.parse("tel:10086"); Intent intent = ...

    晚晴幽草轩轩主
  • Activity数据回传

    上一节学习了将简单的数据从MainActivity传递到SecondActivity,本节一起来学习数据如何从SecondActivity回传到Main...

    分享达人秀
  • Android解析WMS之Window删除过程

    前言 在本系列文章中,我提到过:Window的操作分为两大部分,一部分是WindowManager处理部分,另一部分是WMS处理部分,Window的删除过程也不...

    用户1269200
  • Android热更新利器Tinker接入

    基准包 例如有一个版本A,但是这时A是有Bug的,然后修复Bug后的生成的版本我们称为B。A和B之间的区别产生一个差分包(这里也称为补丁包),那么我们就可以说这...

    用户1269200
  • 浅谈android中的目录结构

    之前在android游戏开发中就遇到本地数据存储的问题:一般情形之下就将动态数据写入SD中存储,在没有SD卡的手机上就需另作处理了;再有在开发android应用...

    晚晴幽草轩轩主
  • 自定义注解和解析器实现ButterKnife

    相信绝大部分的Android开发者都曾使用过ButterKnife, 利用ButterKnife开发者可以快速的实现实体view与xml的绑定,此外还能绑定各种...

    用户1269200
  • 老外对中国式App设计趋势的分析:中国移动应用设计趋势解读

    导读: 作为一个开发者,如果你还不关注移动云开发,那么你很快就被淘汰了。下面来看看老外对中国移动的分析 ? 今年夏天,我收拾好所有行李,从旧金山搬到了广州工...

    用户1410343
  • Activity间数据传递方法汇总

    在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递。 一、常用数据...

    分享达人秀

扫码关注云+社区

领取腾讯云代金券