启动、内存、卡顿三大分析,用户体验就用它?
简介: 启动分析支持通过预置采集和个性化自定义两种方式定义启动阶段,可以分别查询首次启动、冷启动、热启动的情况效果,并可以与设备、系统、版本、地域等维度做交叉筛选查询。
随着大量应用涌入市场加入“App内卷之战”,终端用户们对应用质量的要求是愈发地挑剔。端上研发同学光关注崩溃类bug解决已无法应对用户对App体验的诉求,很多用户也会反馈与性能有关的问题,比如App启动时间太长、页面卡死、闪退等。 随时线上用户诉求的提高,很多开发同学也从线下测试性能演变到更关注线上性能问题,以此保障用户体验。
友盟+应用性能监控平台 U-APM从去年底免费上线后,得到行业众多开发者的接入和支持。友盟+也非常重视开发者面对应能监测的各类问题,在近几个月,基于原有稳定性功能优化的基础上,U-APM又新增启动分析、内存分析、卡顿分析三大性能模块,全面助力开发者提升用户体验。
启动分析
启动场景是用户使用App的第一道关卡,启动慢、启动闪退都会直接从源头阻断客户使用,甚至会造成启动不成功新客户卸载的情况。很多技术团队都会以启动耗时作为重点性能监控指标。U-APM中启动分析包含启动趋势、慢启动分析和启动崩溃分析三大功能模块。
启动分析支持通过预置采集和个性化自定义两种方式定义启动阶段,可以分别查询首次启动、冷启动、热启动的情况效果,并可以与设备、系统、版本、地域等维度做交叉筛选查询。
用户也可以分别对首次启动、冷启动和热启动设置慢启动的业务定义。一般情况下,热启动的时间要远低于冷启动、首次启动的时间。慢启动分析可以分别监控三种情况下的慢启动设备数量,以及设备系统分布等信息,并且支持单一设备定点查询启动时序,精准定位问题。
启动阶段的崩溃应当是日常开发中首要需要解决的问题,避免用户短时间遇到崩溃无法继续使用。启动崩溃分析中筛选出自定义的启动时限下的崩溃列表,更便于定位启动问题。
内存分析
U-APM的内存分析提供线上OOM异常的监控与分析,帮助开发者及时发现与定位线上OOM问题。同时,提供App运行阶段内存占用情况,为应用内存优化提供关键指标数据。
在Android异常中,并不是所有的OOM问题都是可以简单查看错误摘要是否包含Out of Memory就可以判断的。
此次内存分析OOM异常的模块中,将内部沉淀使用多年的智能诊断技术对外透出。可以通过智能读取错误堆栈进行匹配,挖掘到那些不是OOM但实际是由OOM引起的异常问题并加以聚类,OOM异常的判断率直接提升20%~30%。iOS应用此次也新增了OOM异常的捕获。
内存占用模块中展示了内存关键指标信息,并且配以设备情况分布用作统计参考。还提供了渠道、版本、系统、设备型号的分布情况。
卡顿分析
U-APM中通过主线程的响应时间,将有卡顿体验的设备信息、卡顿日志进行上报。免费提供了iOS全部采集以及Android 双端卡顿采集,且如此大量的日志数据不用按流量付费。
除此之外,如果开发者觉得一条条看错误堆栈非常麻烦,可以使用U-APM利用聚合算法提供了卡顿模块的功能,约等于1分钟看到200条堆栈的内容,有效节省开发者大量挖掘问题的时间。卡顿模块支持正序、倒序两种聚合形式:
•正序聚合:筛选影响用户量大的200个堆栈从栈顶到栈底进行聚合,帮助客户挖掘造成卡顿问题的最核心问题
•倒序聚合:筛选影响用户量大的200个堆栈从栈底到栈顶进行聚合,帮助客户挖掘造成卡顿问题的最核心问题
两种方法均展示出现频率前10的模块,子树深度最多支持50层,帮助客户下挖详细的卡顿模块信息
利用OpenAPI自助调用错误数据
U-APM后台的错误数据在开发者日常的业务中还有很多的应用。比如,定期将应用质量数据灌入技术组周报中发给公司各部门,或者在公司自有后台中展示今日实时错误率等性能指标。此次新上的OpenAPI可以解决灵活获取应用采集的错误数据的需求,支持实时/离线90天内的数据灵活调用,免费开通权限即可使用。
监控告警升级
U-APM 中的监控告警功能在近期做了多项升级,支持更灵活更个性化的监控告警设置。开发者除了使用调用OpenAPI的方式自行加工数据设置告警,使用U-APM后台中的监控告警功能也更为方便:
a. 灵活设置告警生效时间:
开发者可以添加告警生效的时间段,比如每周一至周五的9点至19点,周末的一12点至20点,灵活设置工作时间,不被无效信息干扰。
b.重点错误类型/单条错误告警:开发者可以选择需要您重点关注的错误类型
或者直接针对某一条修复中的错误进行持续关注告警
c. 组合形式的告警触发条件
开发者可以通过多种指标以及阈值型或者对比型的规则,以交集/并集的组合方式,灵活设置想要的告警触发条件:
d.多种告警触达渠道
如果开发者还对监控告警的触达渠道有所要求,可以考虑使用公司的办公软件进行群触达,与同组的其他同事一起关注并修复应用问题。
错误捕获升级
U-APM近期的升级中对错误捕获的类型有大幅增多:
Android 支持Java、Native的崩溃采集;ANR;以及针对Unity SDK增加c#、Lua的错误类型;
iOS 支持:Swift、Objective-C崩溃的采集
除上述功能外,U-APM在云真机的UI设计、API上传符号表页面整体加载速度渲染等等功能上也进行了更新,详情及免费使用请至:https://www.umeng.com/apm?&utm_source=w_aly_pc_0723
原文链接
本文为阿里云原创内容,未经允许不得转载。
原文地址:https://www.cnblogs.com/yunqishequ/p/15122946.html
- Python Redis pipeline操作
- python concurrent.futures
- Deepmind的星际争霸2强化学习教程(1):建立环境与训练模型
- python contextlib 上下文管理器
- Django扩展自定义manage命令
- Elasticsearch分片、副本与路由(shard replica routing)
- EsRejectedExecutionException排错与线程池类型
- python重试(指数退避算法)
- 动手为王 | Oracle 数据库跨版本升级迁移实践
- 日志归档与数据挖掘
- Redis实现分布式锁
- Mybatis分页插件PageHelper的配置和使用方法
- 另类保存微信公众平台历史消息的方法 - 星标消息
- CentOS环境下Docker私有仓库搭建
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 谈谈如何利用 valgrind 排查内存错误
- 用java写一个死锁
- Runnable和Thread比较
- 使用@ConditionalOnProperty注解
- Java注解Annotation与自定义注解详解
- spring boot 配置多个DispatcherServlet
- 基于Pytorch实现的MASR中文语音识别
- Quartz.NET 配置文件详解
- 如何用redis正确实现分布式锁?
- SQL Server 事务隔离级别
- Django+Vue开发生鲜电商平台之8.商品详情页功能实现
- Django+Vue开发生鲜电商平台之7.用户登录和注册功能
- centos7下nginx使用tmp目录问题
- TeaWeb – 可视化的Web代理服务
- Slf4j适配日志原理