关于程序员:记一次app性能调优

18次阅读

共计 1250 个字符,预计需要花费 4 分钟才能阅读完成。

项目名称:

某问卷调研零碎

我的项目形容:

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

问题形容:

在一次发版过程中,有某为某型号的机型在零碎第一次降级当前呈现 app 闪崩景象。从新卸载当前问题可解决。

问题出现过程:

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

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

客户:操作步骤:下载新版本的 app 客户端,装置当前,登录,进入问卷模块,app 卡顿,重启后可进入其余模块,再进入问卷模块 app 依然卡死

机型:某为某型号

操作系统:安卓

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

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

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

问题剖析过程:

通过问题出现的形式,发现收集回来的工单,机型集中在某为机型,某具体型号。

因为测试机有安卓和苹果机型,但没有某为该机型,遂首先定位是测试机型差别导致本问题产生。

问题复现:

为了复现该问题,大楼挨个工位搜查该机型号,收集有 5 台,因为卸载后问题隐没,所以须要多收集几台,看产生的概率,同时按不同的操作形式定位问题。

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

问题再次剖析:

依据后面的情景,初步狐疑是系统升级时,未进行旧版本的缓存清理,导致问题产生。当从新卸载后,app 因为旧版本的缓存被清理,新版本 app 缓存没有问题,所以问题没有产生。

初步解决计划验证:

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

问题验证步骤:

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

等再次进入,发现能够进入问卷模块,进行答题。一切正常。

至此,能够对工单进行回复,通过卸载 app 的形式或者清理缓存的形式,进行问题临时解决。

问题深入分析:

尽管找到了长期的解决问题的形式,然而具体的问题实质还是要剖析。

找到源码,仔细阅读缓存相干,发现在答题时,会缓存问卷信息到 app,缩小对后端接口的申请次数,然而在新旧版本的降级中,有某个字段进行了类型批改,当新版本的代码读这个类型的字段时,读取失败,导致失败,因为后续问题解决不优雅,导致系统 app 间接假死。必须重启。

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

问题本源剖析:

为了找到基本的起因,找到了 app 专家,经剖析发现,该呈现故障的机型,对缓存的解决形式和一般机型的解决形式有些差别,会默认保留系统升级后的缓存,而其余机型系统升级后缓存默认是笼罩缓存的。因而导致本次测试未笼罩到。

我的项目总结:

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

作者:焦宗官

正文完
 0