设为首页 加入收藏

TOP

想让安卓app不再卡顿?看这篇文章就够了(三)
2019-09-01 23:14:17 】 浏览:81
Tags:安卓 app 不再 卡顿 篇文章
全面。

当然,这两种方式的聚类,从一定程度上分类大量的卡顿,但不太好控制的是,究竟要取堆栈的多少层作为识别分类。层数越多,则聚类结果变多,分类更细,问题零碎;层数越少,则聚类结果变少,达不到分类的效果。这是一个权衡的过程,实际则按照一定的尝试效果后去划分层数,如微信iOS卡顿监控采用的策略是一级分类按最内层倒数2层分类,二级分类按最内层倒数4层。

img

对于我们产品,目前我们没有按层数最内或最外来划分,直接过滤出感兴趣的关键字的代码后直接分类。这样的分类效果下来数据量级在承受范围内,如之前的2W堆栈可聚类剩下大约2000个(视具体聚类结果)。同时,每天新上报的堆栈都跟历史数据对比聚合,只过滤出未重复的堆栈,更进一步地缩减上报堆栈的真正存储量。

卡顿监控系统的处理流程

img

用户上报

目前我们的策略是:

1、通过后台配置下发,灰度0.2%的用户量进行卡顿监控和上报;

2、如果用户反馈有卡顿问题,也可实时捞取卡顿日志来分析;

3、每天灰度的用户一个机器上报一次,上报后删除文件不影响存储空间。

后台解析

1、主要负责处理上报的卡顿文件,过滤、去重、分类、反解堆栈、入库等流程;

2、自动回归修复好的卡顿问题,读取tapd 卡顿bug单的修复结果,更新平台展示,计算修复好的卡顿问题,后续版本是否重新出现(修复不彻底)

平台展示

上报处理后的卡顿展示平台

http://test.itil.rdgz.org/welcome/wereadStack/index

主要展示卡顿处理后的数据:

1、以版本为维度展示卡顿问题列表,按照卡顿上报重复的次数降序列出;

2、归类后展示每个卡顿的关键耗时代码,也可查看全部堆栈内容;

3、支持操作卡顿记录,如搜索卡顿,提tapd单,标注已解决等;

4、展示每个版本的卡顿问题修复数据情况,版本分布,监控修复后是否重现等。

img

img

自动提单

实际使用中,为了增强跟进效果,我们设立一些规则,比如卡顿重复上报超过100次,卡顿耗时达到1000ms等,自动提tapd bug单给开发处理,系统也会自动更新卡顿问题的修复情况和数据,开发只需定期review tapd bug单处理修复卡顿问题即可,整个卡顿系统从监控,上报,分析,聚类,展示,提单到回归,整个流程自动化实现,不再需要人工介入。

实际应用效果

1、接入产品:微信读书,企业微信,QQ邮箱

2、应用场景:现网用户的监控,发布前测试的监控,每天自动化运行的监控

3、发现问题:三个多月时间,归类后的卡顿过万,提bug单约500,开发已解决超过200个卡顿问题

卡顿监控的组件化

考虑到Android卡顿监控的通用性,除了应用于Android WeRead中,我们也推广到广研的其他产品中,如企业微信,QQ邮箱。因此,在开发GG的努力下,推出了卡顿监控库http://git.code.oa.com/moai/monitor/ ,其他Android产品可快速接入卡顿监控的SDK来监控app卡顿情况。

目前monitor卡顿监控库主要有监控主线程卡顿情况,获取平均帧率使用情况,高频采样和获取卡顿信息等基本功能。这里要注意几点:

1、采样堆栈信息的频率和卡顿耗时的阈值均可在SDK中设置;

2、SDK默认判断一个卡顿是否发生的耗时阈值是80ms(5*16.6ms)

3、采样堆栈的频率是52ms(约3帧+,尽量错开系统帧率的节奏,堆栈可尽量落到绘制帧过程中)

4、启动监控后,卡顿日志就会不断通过内部的writer输出,实现MonitorLogWriter.setDelegate才能获取这些日志,具体的日志落地和上报策略因为各个App不同所以没有集成到SDK中

5、monitor start后一直监控主线程, 包括切换到后台时也会,直到主动stop或者app被kill。所以在切后台时要主动stop monitor,切前台时要重新start

1.组件引入方式

img

2.主线程卡顿监控的使用方式

1)启动监控

img

2)停止监控

img

3)获取卡顿信息

img

app中加入监控卡顿SDK后,会实时输出卡顿的时间点和堆栈信息,我们将这些信息写入日志文件落地,同时每天固定场景上报到服务器,如每天上报一次,用户打开app后进行上报等策略。收集不同用户不同手机不同场景下的所有卡顿堆栈信息,可供分析,定位和优化问题。

特别致谢

此文最后特别感谢阳经理(ayangxu)、豪哥(veruszhong)、cginechen对Android卡顿监控组件化的鼎力支持,感谢姑姑(janetjiang)悉心指导与提议!希望卡顿监控系统能越来越多地暴露卡顿问题,在大家的共同努力下不断提升App的流畅体验!

相关阅读
java script框架设计思路图
小程序优化36计
【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识

此文已由作者授权腾讯云+社区发布,更多原文请点击

搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!

海量技术实践经验,尽在云加社区

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SVN上传的时候没法显示文件名,只.. 下一篇adb连接安卓模拟器

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目