设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

业务运维实战:腾讯是怎么优化APP用户体验的?

发布时间:2021-01-04 10:20 所属栏目:53 来源:网络整理
导读:《业务运维实战:腾讯是怎么优化APP用户体验的?》要点: 本文介绍了业务运维实战:腾讯是怎么优化APP用户体验的?,希望对您有用。如果有疑问,可以联系我们。 作者简介: 黄伟俊(henry) 腾讯高级 运维 工程师,多年研发与运维工作经验.专注(移动端+服务端)

《业务运维实战:腾讯是怎么优化APP用户体验的?》要点:
本文介绍了业务运维实战:腾讯是怎么优化APP用户体验的?,希望对您有用。如果有疑问,可以联系我们。

作者简介:

黄伟俊(henry)

腾讯高级运维工程师,多年研发与运维工作经验.专注(移动端+服务端)性能管理,大数据分析领域的探索与实践.

引言

当前,用户体验已成为一种新的产品价值.当技术实现不再是产品核心竞争力时,产品的竞争就是用户体验的竞争.而用户弹指间感知到的性能体验对于用户体验尤为重要.

移动互联网产品因为用户的手机型号繁多、手机操作系统版本不一致、app版本难统一等问题,很难在开发或测试环节就完全解决掉移动app的性能问题,这使得移动app产品在运维过程中,不得不面对用户体验不优、性能不佳的问题.

如何让开发可以高效定位性能问题?

让开发,测试,运维清晰的把控各个产品的性能状况?

我们结合了当前业界商用的APM技术,实现了一套腾讯社交运维的myAPM方案.

myAPM是什么?

APM(Application Performance Management)应用性能管理,它是一套集终端,网络,服务端性能管理于一体的监控方案.在这里,就不展开介绍了.

myAPM,专注于移动端的性能管理.既能监控定位性能问题(卡慢),也能应用于日常的app性能运营分析,提升产品用户体验.

监控方式

myAPM采用BCI注入方式,实现业务方法粒度监听.

在注入技术选型时,myAPM采用了类ASM的注入技术,其注入效率,校错能力,学习成本,都比ASM要好一些.

注入阶段

myAPM实现性能监控与功能开发零耦合.在编译阶段注入监控能力,对开发零感知.

myAPM特点:

  • 实现方法粒度的自动化注入监控;
  • myAPM采用插件化设计:各个特性功能可自由组合,以满足开发者定制化需求.

myAPM可以做什么?

当前,我们利用myAPM的能力,主要从以下四个方面进行探索与实践:

一、Apk 包大小分析

二、App卡慢监控分析

三、App启动性能分析

四、App 核心链路性能分析

一、Apk 包大小分析

一个app,随着新功能的持续增加,其apk的大小也在不断地膨胀.Apk size的问题,越来越困扰和限制着开发同学,影响某些功能的上线,同时,也降低了用户体验.

同时,app运营时间越长,功能迭代 / 代码重构次数越多,“垃圾”代码(就是没有被实际调用过的代码)的数量就会越多.

由于代码量大,代码调用层次深,每个开发同学只负责部分功能开发.如果让开发同学人工去做全局“垃圾代码”的分析,显然,其难度很大,效率不高.

而myAPM的apk包大小分析,就是用来帮助开发同学,快速暴露这些“垃圾代码”,开发同学只须集中精力,针对梳理出来的问题代码,做进一步确认和清理即可.

1、Apk包大小分析原理

  • myAPM会在类或方法中,注入一个唯一ID;
  • 内测环境部署,通过大量的自动化用例,过滤掉有调用关系代码;
  • 对未调用代码,进行重新注入,灰度外网,收集线上真实用户的行为.通过内网测试,可以过滤掉部分常用代码,从而减少因注入增加的app包量.
  • 通过长时间、大用户量的数据运营,我们即可定位出无实际调用的代码.开发小伙伴即可集中精力在这些问题方法的确认及清理.

2、Apk包大小分析应用场景

  • 定位完全无调用或被引用的类;(粒度粗,清理方便)
  • 定位孤岛方法:即没有主调和被调的方法(粒度细,清理全面)
  • 定位无调用的方法链路;

3、Apk包大小分析特点

  • 结合线下模拟测试行为大数据分析
  • 结合线上用户实际行为大数据分析
  • 性能消耗小
  • 自动注入

4、开源工具 & apk包分析

可能有同学,会罗列出一系列开源的工具,也可以很方便地甄别出app这种无调用代码.但对于有调用关系的一条链路(一组方法),仅仅通过线下分析,无法判断其是否有被调用.我们只能利用线上大量用户的真实行为分析,更好地去判断和确认.

5、方法注入样例

 

通过一个唯一ID(14236)来上报,既避免了代码中敏感信息的泄漏风险,也大大节省上报量.

6、Qzone –android应用实例

Qzone android app,针对业务代码以及第三方包代码,采用类无调用分析.(类中所有变量或方法,没有被引用或调用.)

内部测试阶段:

在内部测试中,由于机型,测试用例有限,分析结果是42%的类没有调用或引用.

灰度外网阶段:

在灰度外网用户后发现,所有类都被调用或引用.但40%类被调用次数少于10次.由于灰度用户是50W,即40%的代码只有万分之二的用户有调用.针对这些,后续我们可以分析,调整这些类的启动加载顺序(如:延时加载).

结论:

  • 当前QQ空间 APP,不存在多余无调用类文件.
  • 后续,在监控粒度上,我们会从“类方法”进行深层面的挖掘分析.

二、App卡慢分析

在app用户体验上,除了crash故障外,相信app主线程卡慢(负责与用户交互的线程),是用户最不能忍受的.
我们这里所说的卡慢分析,是指对app主线程代码的卡慢监控分析.

1、工作原理

myAPM卡慢监控,实现对目标代码的“方法粒度”的注入、卡慢监听.

其本质,是在目标方法调用的前后,注入时间,进行卡慢监听及分析.原理图,如下:

2、卡慢分析全流程

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读