移动编程的性能监控和追踪

    xiaoxiao2021-03-25  46

    你会不会遇到这样的场景,一个外地用户说APP使用加载了很久,很慢,然后你们测试团队的人试试,说我这里没有问题呀,蛮好的呀,然后开发那里就犯难了,程序没有问题呀,是不是客户手机不行呀。

    其实APP开发其中的一个难点就是对APP性能的监控和追踪,你自己使用没有问题,不代表其他人没有问题,因为APP运行的手机不同,所处于的网络环境不同,就会导致大家遇到的问题会不同,一个好的APP必须是可以应对各种复杂情况的,不能只保证自己测试的环境下是好的。这就和飞机生产厂家,你不能讲我的飞机在晴天飞行是没有问题,阴雨天,打雷天,我就不管了。因为我们测试团队不可能模拟全部的实际环境,尤其网络环境,这就要求我们的APP有在生产环境下进行性能监控和追踪的能力。我们APP在全国各个地方使用,发现了很多奇怪的问题,比如非海南手机到了海南就有问题,海南本地手机没有问题;还有,一个苏北的电信客户手机做支付的时候,就特别慢,但其它地方或者其它运营商就没有问题,后来发现是苏北电信到我们扬州机房的8080端口延迟太久导致,使每次HTTPS连接握手都需要花很久的时间,后来我们把服务迁移到了阿里云机房,就没有再发生类似的问题了,我们运维讲阿里云是8线的BGP机房。

    我们怎么样来建立自己的监控体系呢?我认为建立APP的监控体系的前提是软件设计需要建立统一的网络访问层。我看到过很多APP的代码,都没有统一的网络访问层,因为有的人使用这种图片加载方式如Universal Image Loader,有的使用其他的,程序可能经手多个程序员,大家都使用自己熟悉的框架来解决问题。我们的APP建立的统一的网络访问层,JSON数据和图片数据都通过这个网络层进行传递,架构图如下:

    服务器和APP直接传递数据通过JSON,但JSON从网络层出来就已经转换层了MODEL,我们的GUI界面是不知道JSON的存在的。因为有了统一的网络访问层,我们就可以在这里统一加入监控日志,如每个界面分配一个ID,进行网络接口请求的时候,提供这个ID,网络层记录发出和返回的时间,就可以监控网络请求消耗的时间,而且可以监控该请求的网络流量等等。实现云日志的系统现在很多,如BUGTAG,腾讯,百度也有,自己可以根据需求的选用,当然对于大公司,他们可能建立自己的监控云平台,毕竟可以有更好的掌控,可以自己开发更好的分析报表。

    有了好的监控体系,我们就可以把各自生产环境下的数据收集起来,发送到云平台上面,而且我们可以实现定点监控,如针对某个有性能问题的用户APP进行监控。

    转载请注明原文地址: https://ju.6miu.com/read-50229.html

    最新回复(0)