移动性能测试 开启移动专项之旅 (android 客户端性能-cpu)

卡斯 · 2016年08月09日 · 最后由 卡斯 回复于 2017年12月13日 · 75 次阅读

缘起

老板交代需要针对新的大版本进行专项测试,于是乎开始了 android 端的测试

随着

软件的安装运行,针对 cpu 的验证开启,突然发现不对,对于应用我并没有进行任何操作,界面一直停留在登录页面,为何 cpu 使用率如此之高呢?


思考

界面无任何操作,难道是后台不停的在进行交互么?

验证


查看内存使用,并无明显异常


查看日志,嘿,有点意思


为了进一步确认问题,监控流量看看,问题基本可以确认

问题得到确认,那么接下来是否可以提交开发了?

对于进一步的人来说,当然是 no 了

分析

通过日志分析及流量分析发现,后台存在一定频率的做上传动作,俗称心跳,查看了下时间为 5s,总所周知,这个一般都是由服务端控制,那么我们是否可以通过修改服务端的频率来控制从而解决此问题呢

动手

通过查询服务端的配置项,对于心跳的频率进行了调整为 15 分钟一次,再次查看 cpu 的使用率,大吃一惊,cpu 不降反而升

什么鬼
难道是服务端的配置项没生效?客户端存在此控制?

为了验证疑惑,再次打印日志来查看频率,结果是

果然
服务端的配置没有生效!!!!

为何服务端的配置没有生效?难道客户端没有从服务端拉取最新的控制选项?还是需要某种机制来触发?
回想一下修改服务端的配置后,貌似我的测试客户端并没有重启?会不会和此有关系?
于是乎
重启客户端,再次查看日志,三分钟过去了,没有再次打日志,终于服务端的配置生效了

但是
问题解决了么,怀着忐忑的心再次查看 cpu 的消耗,无任何改变!!!!!

难道和心跳无关?回想一下此前测试的前一个版本 cpu 并没有这么高的消耗,上个版本峰值都不超出40%

看了下本版本和上版本的功能点对比,只是增加了一个 xx 轨迹,这个就是我们当初查看日志发现的心跳,那么问题必然出现在此,但为何单纯的修改心跳频率并不能修复 cpu 的消耗过高的问题呢,是否还有未知?

不死心的我继续往下走
内存对比
这次我们再次打开一个系统浏览器应用,看到 cpu 的消耗大约在 50%,但是被测应用还是在 100% 以上,对比分析内存,突然发现被测应用的虚拟机内存消耗很高啊

难道是虚拟机一直在运行吃高内存导致 cpu 居高不下?
新增的功能的进程也是挂在虚拟机运行?

再次查看应用的内存使用,发现果然存在 dalvik 里面的内存不释放!

到此
问题确认

后记

查询应用的源码,存在 2 个死循环,第一个是上传数据机制,第二个是查询本地数据机制 ╮(╯_╰)╭

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 23 条回复 时间 点赞

😅 这是还没写完就发出来了吗?

哈哈

看下你手机几核芯,如果是 8 核,基数可是 800%

#4 楼 @jira 不过话说也啥情况也不干,也挺大的

查下这个界面什么占用了 CPU 耗时,比如自定义 view 一直在重绘

我用 adb shell 测 cpu 占用率,然后测出来数据应该如何分析呢,怎么判断这个 cpu 占用率是否合理呢

写的像小说,引人入胜

卡斯 #11 · 2016年08月09日 Author

@liyaoyao 一般情况峰值不超过 90% 静态不超过 5% 一般运行状态不超出 30%

我没记错的话,dumpsys cpuinfo 不是实时更新的。
我自己是用 top -n 1 -d 0.1 更多,而且能做到 300ms 更新一次。

截图有一种朦胧的美

适合搞个视频出来.

卡斯 #15 · 2016年08月09日 Author

@seveniruby 我已经打算列入那个里面了

个人感觉内存泄漏可能一直存在吧。。。看架势感觉像是修改了 APP 的内存配置导致问题容易暴露的吧。。。

#12 楼 @sziitash 用 top 的话本身 top 占用的资源也不算少,你还设定 0.1 秒😈

@kasi 多谢分享!有张图没打马,暴露了😏

后台持续占用,直接 traceview 拉一把 trace 不就知道了吗

匿名 #20 · 2017年12月12日

请问,我们大概的计算应用消耗总内存,可以用 adb shell top -n 1 grep XXX .然后把对应的进程服务占用内存加起来得出吗?
比如计算威信的,这一次大概消耗内存 220M 左右。

卡斯 #21 · 2017年12月12日 Author

对的

匿名 #22 · 2017年12月13日
卡斯 回复

我就是昨天测试微信看到消耗内存这么多,我就开始怀疑自己计算方式了。。基本 600 多 M

卡斯 #23 · 2017年12月13日 Author

正常 我开在电脑上面的 mac 版本微信有时候还是 2 个 g 的消耗

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册