你的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应用性能监控平台其实完全可以满足开发者性能监控的各类问题。

U-APM的SDK主要是基于阿里巴巴 UC 内核团队强大的技术及友盟+超强的错误捕获能力。除通用的设备、系统、版本分布外,U-APM还支持运营商、地域、页面、时长分布,明确错误影响用户范围以及特征。

相较于其他市面上的性能监控产品,U-APM还提供完整的产品咨询及专业的客户服务,这也就为支持App长期、稳定、可靠的数据服务提供了更坚实的保障。

产品使用请点击左下角【阅读原文


???? 更多精彩内容请点击:

【干货】那些上亿流水的游戏App都用了哪些降本提效工具?

万万没想到!爆款抖音小游戏的秘诀竟然是......

App“照妖镜”:随时监控你的应用质量相关推荐

  1. 青龙面板用wxpusher随时监控JD收益(之青龙2.12版)

    青龙面板用wxpusher随时监控JD收益(之青龙2.12版) 这个适合于小白(我也是小白乱搞而成) 适用情况: 青龙面板已经安装好,已经把JD 库拉回来了.想搞一个还算可以的信息推送平台定时了解一些 ...

  2. android 监控行为,一种针对Android系统App行为的监控方法

    主权项: 1.一种针对Android系统App行为的监控方法,通过安全内核实现方法在Android内核层添加模块,实现对整个Android系统的系统调用的拦截与监控:包括如下步骤:S1.编写内核模块: ...

  3. 三步快速免费开发工业手机APP,远程监控西门子300PLC数据

    三步快速免费开发工业手机APP,远程监控西门子300PLC数据                    (工业APP之于制造  巨控_何工) 互联网的飞速发展为人们的生活带来了翻天覆地的变化.工业APP ...

  4. android 笔记 源码,Android一款类似印象笔记的App,随时记录您的生活点滴

    Android一款类似印象笔记的App,随时记录您的生活点滴 一款类似印象笔记的App,随时记录您的生活点滴,但时目前功能还没达到印象笔记那样,但是本人后期将通过版本迭代的方式来逐渐完善该App达到印 ...

  5. 直播软件app开发:如何保证音视频质量?

    随着社交媒体的发展,视频直播已成为越来越流行的社交方式.直播软件app开发也因此成为了一个热门话题.在开发直播软件app时,保证音视频质量是至关重要的.本文将介绍如何确保你的直播软件app在音视频质量 ...

  6. 《近匠》酷传:解除App发布和监控痛苦

    摘要:<近匠>第21期,酷传CEO李卫杰表示,酷传要解决的是整个App发行,并不仅仅是一个第三方发布工具,希望酷传成为每个开发者和运营推广人员的必备工具. CSDN移动:请讲讲酷传的团队和 ...

  7. 污水处理物联网手机APP远程监控系统,无论你在哪里只要手机有信号,便能随时监控现场设备。

    在我国的各种行业中,造纸行业是污染最严重的行业之一,因为造纸厂从原材料到制成纸制品,所有的工艺都需要用到水,而排放的废物以及化学试剂等都通过水传播到自然界.给周围的生态环境造成了很大的污染,有些甚至是 ...

  8. 手机app应用免费监控软件U-APM保姆级教学,入门使用

    1.首先第一步你需要有一个APP,(当然没有也关系,直接在github上克隆一个你想要的开源app这里是链接地址https://github.com/marketplace?type=&ver ...

  9. 阿里巴巴陈武:通过亿级用户App的实践验证,锤炼高质量APM体系

    在这个飞速运转的移动App时代,有一句格言--快总比慢好.这也使得对移动App性能的管理.优化需求变得越来越急切,不可忽视. \\ 2016年8月18-19日,由极客邦.InfoQ和听云联合主办的AP ...

最新文章

  1. 日志文件和mysql同步到kafka_logstash_output_kafka:Mysql同步Kafka深入详解
  2. SAP RETAIL初阶之商品主数据WM视图
  3. 重庆职高统考c语言,2021年重庆市中职毕业生参加高职分类考试招生文化素质测试 考试说明...
  4. self studying room list available at campus
  5. iOS之单例模式的写法
  6. JS对文本框输入字符的限制
  7. 《C++ Primer》13.1.1节练习
  8. 一个div压在另一个div上面_【CSS小分享】用CSS画一个新拟态风格键盘
  9. 记忆化搜索 codevs 2241 排序二叉树
  10. 更改ESXi主机root用户密码
  11. 互联网协议第四版ipv4
  12. A New Voyage
  13. Zabbix系列:设置动态监控告警时间范围
  14. 要让读者在不看任何数学公式的情况下理解傅里叶分析。
  15. 2020PAT甲级秋季7-4 Professional Ability Test (30分)
  16. .tex类型文件怎么阅读_有了这些神器,什么文件格式转换都能搞得定!
  17. 影响stable diffusion的embedding训练效率的部分问题和拟解决办法
  18. 《IT学生解惑手册》电子版免费下载!
  19. css3之transform-origin属性详解图文笔记
  20. Python模拟登陆大连交通大学教务在线

热门文章

  1. 解决一个安装office2016缺少vcruntime140.dll的问题
  2. 实现物联网和AI的边缘计算融合 Ruff 推出百元以内AIoT人脸识别模组终端
  3. 网络素养公开课笔记(四)
  4. 浏览器本地存储的四种方式
  5. hotel california.mp3
  6. angular+ng-zorror主题换肤
  7. 计算机管理损坏的图像,损坏的图像,教您提示损坏的图像该怎么解决
  8. linux io流:块层
  9. 消息摘要算法概述及简介
  10. C++线程编程-所有权转移与单次调用