如何借用友盟+U-APM随时监控应用质量?

大数据
导致 App 性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线、系统函数、编程范式、数据结构等导致的。即便是最有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”,因此解决性能问题的关键是在于能不能尽早地发现和定位和捕获这些错误。

一、你的App也经常“作妖”么?

曾经听一位金融类的top sales吐槽自家App稳定性的问题:耗费大半年精力终于签下行业头部客户,但在远程指导客户操作时客户手机App直接崩溃。等最后问题修复好已经几个小时过去了。在一寸光阴一寸金的金融领域,产品的市价早就变了,到碗里的肥鸭子就这么飞了。

类似崩溃这样的App性能问题是造成用户流失的罪魁祸首之一,也是反映App质量最基本和最关键的一环。App 的性能问题还包括网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等,这其中崩溃带来的影响是最为严重的。相关数据显示,当iOS的崩溃率超过0.8%,Android的崩溃率超过0.4%的时候,活跃用户有明显下降态势。它不仅会造成关键业务中断、用户留存率下降、品牌口碑变差等负面影响,而且会直接带来卸载和流失。

二、定位、捕获丰富错误问题

导致 App 性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线、系统函数、编程范式、数据结构等导致的。即便是最有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”,因此解决性能问题的关键是在于能不能尽早地发现和定位和捕获这些错误。

随着App业务的与日俱增,各个系统也越来越复杂,服务间的调用,服务的依赖,以及分析服务的性能问题也越棘手,因此引入性能监控平台尤为重要。能不能快速、准确、丰富的定位错误类型,是衡量性能监控产品的首要因素。以友盟+的U-APM应用性能监控平台为例,无论是 Java、Native 崩溃,还是 ANR、系统各种强杀等问题;无论是虚拟地址耗尽、物理内存耗尽、栈溢出、fd 耗尽,还是堆破坏等极端环境;无论是普通的单进程,还是多进程场景......所有的异常问题U-APM都可以捕获到,并会生成内容完整、丰富、全面的日志。

以ANR捕获为例,U-APM的捕获实现原理是:系统的 system_server 进程在检测到 App 出现 ANR 后,会向出现 ANR 的进程发送 SIGQUIT (signal 3) 信号。正常情况下,系统的 libart.so 会收到该信号,并调用 Java 虚拟机的 dump 方法生成 traces。在使用 U-APM SDK 后,SDK 会拦截 SIGQUIT。在出现 ANR 时,libcrashsdk.so 会优先收到信号,并生成 traces 和 ANR 日志。在 SDK 处理完信号后,会将信号继续传递给系统的 libart.so,让系统生成 ANR traces.txt。在使用 U-APM SDK 后,SDK 会拦截 SIGQUIT。在出现 ANR 时,libcrashsdk.so 会优先收到信号,并生成 traces 和 ANR 日志。生成完整的 ANR 日志后,U-APM还会提供获取触发 ANR 的原因、手机中 TOP 进程 CPU 使用率、ANR 进程中 TOP 线程 CPU 使用率、CPU 各核心处理时间分布情况、磁盘 IO 操作等待时长等重要信息。

 

图:U-APM SDK ANR 捕获原理,红色线为 U-APM SDK 处理 ANR 信号和生成 ANR 日志的流程,紫色线为系统生成 ANR traces.txt 的流程。

三、实时监控告警与修复验证

作为App开发者,相信大家一定遇到过类似的尴尬问题:故障永远都是你的客户告诉你的,而在什么时候发生的,你也无法确定,只能通过客户的反馈倒推时间节点,最后从错误日志中得到相对完整的日志信息。

那开发者如何掌握主动权?错误日志有可能会有人漏记录,平均修复时间(MTTR)更不用想了,需要从 0.1 开始定位,先看 App是哪个模块报错,再猜测是哪个服务导致,再打开链路追踪系统,或是日志平台等。稍微复杂些的,排查来来往往基本都是半小时、一小时以上......

破局的核心点就是把监控告警的生态圈建设好。整个通路的触达渠道需要即时有效,最好能覆盖企业办公中主要消息流通的渠道。以友盟+应用性能监控平台U-APM为例,涵盖的触达渠道就有邮件、钉钉、企业微信、飞书等等。其中后三者可以通过webhook的方式直接将监控告警发送到群组里,让组内的研发同学第一时间获取到有效信息,下图中展示了U-APM中的告警计划设置界面,可以设置监控的错误类型、阈值、版本、触达方式。

 

此外,针对一些交易型高价值应用遇到的崩溃问题,比如券商/银行的金融理财类App,如果某一用户在购买时效性短的金融产品时发生异常,解决错误的快慢会对用户造成极大的影响。这时就需要单点追查这个用户的行为路径,即时排查错误原因。如U-APM就为开发者提供了行为日志、用户错误细查的功能。行为日志是由自动采集的页面信息组成的,方便开发者根据用户崩溃时的前项页面路径,来定位和发现崩溃现场。用户错误细查可以根据用户的账号(开发者上传)搜索所选时间范围内的所有错误、日志以及趋势图。可以根据用户的崩溃日志复现崩溃。告别去服务端捞Log的尴尬,节省跟用户沟通复现崩溃的时间和人力成本,同时还可以避免崩溃无法复现的窘境。

 

三、工具哪家强?

市面上性能监测的产品其实并不多,能统计多维度crash,涵盖多种ANR,并有告警功能的就更少了一些。

上文提到的友盟+的U-APM应用性能监控平台其实完全可以满足开发者性能监控的各类问题。 

责任编辑:赵立京 来源: 网络
相关推荐

2020-12-29 13:17:35

错误分析模块

2021-07-28 17:00:36

友盟应用性能监控

2014-05-06 10:06:07

用友优普U8+

2014-04-24 13:21:20

2013-09-04 11:15:14

用友用友U8+

2014-11-06 10:00:46

Gartner

2015-07-27 11:00:33

应用性能监控工具APM

2014-03-09 17:19:52

杨小美U8+用友

2014-08-23 16:07:55

APM应用性能管理

2013-04-07 15:41:26

用友U8+平台

2014-02-18 16:11:22

APM云智慧

2022-11-07 14:27:56

分布式系统微服务架构网络管理

2012-10-30 17:58:29

用友U8信息化

2010-04-13 15:50:36

用友U8 All-in信息化

2011-08-09 11:23:56

用友移动应用云计算

2011-01-19 19:12:21

Android应用数据友盟

2013-07-04 10:35:44

用友用友U8+UAP

2009-10-22 08:57:56

点赞
收藏

51CTO技术栈公众号