巧用友盟+U-APM 实现记一次App性能调优

项目名称:

某问卷调研系统

 

项目描述:

一个基于某银行app的其中一个子系统:问卷调研子系统。

 

问题描述:

在一次发版过程中,有某为某型号的机型在系统第一次升级以后出现app闪崩现象。重新卸载以后问题可解决。

 

问题呈现过程:

   客户:系统升级以后,有工单提交到后台,app闪崩,必须重启。

   技术:提供具体的系统机型,型号,操作步骤

   客户:操作步骤:下载新版本的app客户端,安装以后,登录,进入问卷模块,app卡顿,重启后可进入其他模块,再进入问卷模块app仍然卡死

   机型:某为某型号

   操作系统:安卓

   技术:卸载app后再重新安装新版本问题是否存在?

   客户:卸载后再重新安装新版本,不是从旧版本升级而来,app不闪退,能进入答题模块。

频率:工单一天有好几单。


问题分析过程:

   经过问题呈现的方式,发现收集回来的工单,机型集中在某为机型,某具体型号。由于测试机有安卓和苹果机型,但没有某为该机型,遂首先定位是测试机型差异导致本问题发生。

 

问题复现:

   为了复现该问题,大楼挨个工位搜寻该机型号,收集有5台,由于卸载后问题消失,所以需要多收集几台,看发生的概率,同时按不同的操作方式定位问题。

   收集5台机器后,经测试,通过旧版本升级而来的app,问题100%必现。

   卸载后问题100%消失。

 

问题再次分析:

       根据前面的情形,初步怀疑是系统升级时,未进行旧版本的缓存清理,导致问题发生。当重新卸载后,app由于旧版本的缓存被清理,新版本app缓存没有问题,所以问题没有发生。

 

初步解决方案验证:

       为了验证再次分析问题的想法,提出的初步解决方案是,对一台有问题的机型,进行缓存清理后,再次进入答题模块。

 

问题验证步骤:

       一台有问题的安卓机型,升级app后,不做任何操作,进入问卷模块,发现问题存在。打开app的,进入设置界面,进入清楚缓存菜单,确定清理数据。

       等再次进入,发现可以进入问卷模块,进行答题。一切正常。至此,可以对工单进行回复,通过卸载app的方式或者清理缓存的方式,进行问题暂时解决。

 

问题深入分析:

       虽然找到了临时的解决问题的方式,但是具体的问题本质还是要分析。

       找到源码,仔细阅读缓存相关,发现在答题时,会缓存问卷信息到app,减少对后端接口的请求次数,但是在新旧版本的升级中,有某个字段进行了类型修改,当新版本的代码读这个类型的字段时,读取失败,导致失败,由于后续问题处理不优雅,导致系统app直接假死。必须重启。

虽然从源码层面找到了问题,也提交了新的修复版本app,但是为何有的机型不会出问题,而只有这一款机型出问题呢?

 

问题根源分析:

为了找到根本的原因,找到了app专家,经分析发现,该出现故障的机型,对缓存的处理方式和普通机型的处理方式有些差异,会默认保留系统升级后的缓存,而其他机型系统升级后缓存默认是覆盖缓存的。因此导致本次测试未覆盖到。

 

项目总结:

虽然问题找到了,但是是通过人工一步步分析才解决的。后面为了通过工具能够迅速定位该类问题,打算引入一款移动端性能分析工具,经调研,有友盟+的一款u-apm可以解决该场景的问题。




作者:焦宗官

上一篇:借助友盟+U-APM实现移动APP启动慢解决实践


下一篇:巧用友盟+U-APM 解决uniapp移动端崩溃的问题