移动端APM性能监控

所谓『APM』,就是Application Performance Management的简称,我们利用这个系统来对应用的性能、可靠性进行线上的监控和预警的一种机制。现在App的开发技术相对成熟,而提升App的使用体验,就成了不同App之间的一个竞争点。
图片发自简书App

1、我们可以了解到线上App的实际使用情况,了解到App的奔溃、异常数据,从而针对潜在的风险问题进行预警,并进行相应的处理,例如发布补丁包、调整服务器策略等等。

2、了解App的真实使用信息,还有助于后端服务器了解客户端使用情况,根据不同的策略进行服务端的架构调整,同时有针对性的提高App使用体验,提高用户使用黏性。

图片发自简书App

APM实际上是一个比较大的工程,这里我们主要讲解客户端的实现,但仅仅是客户端的实现,就已经包含了很多我们需要去解决的问题,例如:混合编程对性能数据采集的影响,采集程序对宿主App的性能影响、侵入程度、可拓展性和可定制性等等,同时Android的碎片化和iOS的一些封闭性,造成了不同设备、不同平台上的数据采集有很多的问题。

另外,APM系统对后端的要求也比较高,例如:数据的采集汇总,分析处理,如果App的用户量比较大,对服务器的压力也是一个比较大的问题,毕竟性能数据的量会比较大。

图片发自简书App

首先我们来看看『内存』,内存的重要性相信大家毋庸置疑,它是对App性能的一个综合性反映,通常我们会考虑到『内存峰值、内存均值、内存抖动、内存泄漏』这样几个方面,这几个考量维度综合反映了App在对象操作、内存使用是否合理、精简内存以及在内存泄漏上的处理是否恰当。

在Android中,我们可以通过Runtime来获取当前App所分配的内存信息,这也是获取实际内存信息最准确的方法。另外,我们还可以借助『LeakCanary』来帮助我们分析内存泄漏,将它集成到我们自己的APM系统中,获取它的内存泄漏信息。

图片发自简书App

『CPU』也是大家非常关心的一个方面,他主要影响了App的发热和卡顿,我们主要通过『CPU峰值、CPU均值』来评判一个App对CPU的优化程度,在Android中,我们可以通过读取/proc目录下的CPUInfo来获取CPU的一些性能信息。

图片发自简书App

『启动时间』是大家比较容易忽视的一个点,现在App接入的第三方SDK越来越多,大部分都需要在Application中进行初始化操作,这就会极大的拖慢启动时间,这也是我们优化的重点,关于App的启动优化,大家可以参考这篇文章http://blog.csdn.net/eclipsexys/article/details/53044990。

另外,启动优化也包括了页面的启动时间的考量,也就是页面的渲染时间,在Android中,我们可以通过Choreographer和Activitylifecyclecallbacks来进行监听,同时,对于一些关键信息,通过使用AOP,我们可以获取更加详细的信息。

图片发自简书App

『UI性能』实际上在前一页中已经有所体现了,除了前面考量的页面渲染性能外,我们对于『UI重绘、滚动帧率、页面ANR』也要进行详细的评测。这些东西,我们可以借助开发者选项中的相关内容来进行测试。

图片发自简书App

『耗电量』实际上是App性能的一个上层表现,通过batteryhistorian我们可以在内测阶段,分析App的耗电异常,在线上,通过监控App的使用和耗电,及时排除可能存在的异常。

图片发自简书App

『网络性能』是一个App看不见的体验,国内网络环境错综复杂,要面对各种流量劫持和各种不稳定因素,所以,对于网络接口性能,也是我们非常关注的点,例如『复杂网络环境、接口往返时间、接口数据异常、CDN、服务器异常』这些都是我们需要考虑的。

那么为了保证在使用APM系统的时候,能够降低接入的成本,所以这块我们通过AOP方式来进行注入,避免大范围的改动。

图片发自简书App

『用户行为路径』按道理来说并不算是APM的范畴,但是通过用户行为路径的分析,我们可以针对用户访问量大的内容进行集中力量的优化,有助于提高我们优化的效率。

图片发自简书App

APM系统监控的方式主要有两种,在内部测试阶段,我们使用『PC端性能检测,它不影响性能,无需侵入代码,可测试竞品,但是需连接ADB』,在线上阶段,我们使用『客户端性能检测SDK,它不受设备限制、可进行场测,但对宿主App代码有侵入、性能有一定影响』。

图片发自简书App

有了采集的性能数据,我们就可以对数据进行分析和展示了,对于这块,后端其实有很多成熟的方案,很多类似的数据展示图表控件,这里只举几个例子。

图表~~

这是借助ELK平台做的展示。ELK平台是一个非常好的数据展示框架,详细内容大家可以参考这篇文章http://blog.csdn.net/eclipsexys/article/details/53364480。

图片发自简书App

前面我们了解了现有APM系统的一些内容,当然,APM系统也是个与时俱进的系统,在现有的基础内容上,我们还能做很多事,例如『AI分析数据Pattern、本地异常数据监控算法、异常数据预警机制、服务端指令控制』,这些也是我们后面的奋斗目标。


问答环节~

1、在省电节能方面,到底要怎么做

省电这一块 主要是需要控制wakelock的使用。控制无谓的CPU运行和计算  这些内容都可以通过BatteryHistorion来进行查看

2、监控会不会很费流量?

流量的话是一个考虑的因素,我们可以通过不同的策略来进行管理 比如 在WIFI情况下上传。同时 使用pb等高压缩协议来进行流量的优化

3、现在不是都流行无埋点技术,这方面有什么不一样

无痕埋点  主要是为了解决用户行为数据和业务行为数据  和性能不太一样

4、在频繁定位的情况下,如何达到省电节能呢

频繁定位类的App 确实是耗电大户,可以在非必须的情况下,采用缓存数据,或者通过简化业务流程的情况下来进行优化

5、做视频下载那块时,当用户一次性选择几百个下载任务下载时,这时候界面会停留很久,等待添加下载任务的完成,请问这块可以从哪些方面优化?

一次几百个下载,这种确实很难优化,毕竟CPU是死的,有CPU运算,就会耗电,可以尽量将这些任务后台化

6、如果有app申请wakelock不释放,系统有什么好的应对策略么,如果我们自己就是系统的话,医生大神会有什么好的建议让系统怎么做呢

作为上层App,你只能控制自己的WakeLock  其它App的耗电,交给系统去处理吧,大部分wakelock造成的问题 都是异常流程没有考虑清楚导致的 。**作为系统开发者,可以给出提示,让用户来操作 或者Kill这些耗电进程

7、如果本地的应用产生bug崩溃了,这种要怎么监控到呢?

本地的异常、崩溃信息,Android有专门的接口可以拿到 收集这些数据后上传,用于分析。android提供了UncaughtExceptionHandler来帮助你处理崩溃

最后推荐一本书


性能优化的具体代码和操作分析方法《Android群英传 神兵利器》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容