本原创文章帖发布在华为开发者联盟社区,欢迎开发者前往访问评论交流,更多与该内容相关讨论,请点击原帖查看:

HarmonyOS应用性能监测服务APMS-稳定性问题定位分析指导

新版本刚发布,崩溃、冻屏、OOM、资源泄露接连出现——该怎么逐一击破?下面以一个真实发版场景为线索,带你走完从告警发现到根因定位的完整稳定性保障链路。

APMS接入流程:

告警配置

1)创建告警规则

       在APMS故障告警页面中,提前配置好稳定性指标的告警规则。系统预置了崩溃(CPP_CRASH、JS_ERROR)、应用冻屏、OOM、资源泄露等告警规则,支持按指标阈值、版本维度灵活配置。

2)接收线上告警,发现稳定性问题

       新版本上线后,系统监测到崩溃率超过预设阈值,自动触发告警并通过邮件、短信或Webhook推送通知到开发者。开发者在告警总览列表中可以看到告警记录,包括指标类型、触发原因、应用版本等关键信息。

3)查看告警详情,跳转故障指标

       在告警总览页面点击"查看",可直接跳转到对应版本的故障指标详情页面,快速进入问题排查流程。

稳定性故障指标查看与问题分布

崩溃问题分析

1)发现崩溃率上涨

       进入故障指标 > 崩溃页面,通过趋势图表确认崩溃率在新版本上线后出现明显上涨。利用版本对比功能,对比当前版本与前一版本的数据变化,量化劣化幅度。

2)初步排查:维度分布与TOP问题

       通过维度分布图表查看崩溃在应用版本、系统版本、设备型号维度上的TOP5分布,确认问题是否集中在特定版本或机型。在TOP问题列表中,按发生次数排序找到主要崩溃问题,查看问题特征ID、故障模块、发生次数和影响设备数。

3)深入故障分析

       点击TOP问题右侧"查看"进入故障分析页面,查看聚合后的问题列表。页面提供多维筛选能力,支持按应用版本、系统版本、机型、时间等条件过滤。点击具体问题查看问题详情,包括问题概要、分析报告、堆栈信息、现场数据等。

4)定位根因:堆栈与符号表

       在问题详情中,堆栈信息是最直接的定位依据。原始堆栈经过结构化处理,FFRT等相似线程做聚合,支持展开收起。通过颜色区分应用函数与系统函数,支持按线程名、Tid、函数名搜索。上传对应版本符号表(SourceMap、debug SO、namecache)后,可反混淆获取真实调用栈。

5)AI辅助分析

       对于CPP_CRASH问题,可点击"AI分析"按钮,AI将结合鸿蒙故障知识库和大模型推理能力,以流式输出分析结果,包括故障基本信息、根因分析、三级根因定位、证据链、根本原因、根因模块和修复建议,帮助快速定位复杂问题。

应用冻屏问题分析

1)发现冻屏率异常

       在故障指标 > 应用冻屏页面,查看应用冻屏率趋势。应用冻屏是指用户使用应用时出现点击无反应或应用无响应,且持续时间超过阈值的情况。通过版本对比确认是否为新版本引入的问题。

2)排查冻屏TOP问题

       在TOP问题列表中,按发生次数排序找到主要冻屏问题。冻屏类型包括应用主线程卡死超时和应用输入响应超时两类。点击"查看"进入故障分析,查看问题详情。

3)分析证据链与采样栈

       在问题详情的分析报告中,证据链综合展示了故障卡死的相关信息,如可用内存异常、执行任务耗时长等。堆栈信息默认展示应用主进程堆栈,支持切换查看不同进程堆栈。采样栈日志通过火焰图展示,从根节点统计每层栈出现次数,帮助快速定位耗时函数。

4)TOP耗时函数优化

       故障分析页面提供TOP耗时函数列表,通过采样栈聚合出高频业务函数。针对耗时函数进行优化可以减少整体卡死问题的出现概率,快速降低故障数。

应用终止问题分析

1)查看应用终止趋势

       应用终止是因为系统资源管控原因导致应用被系统终止,通常是因为系统已处于资源管控临界点。在故障指标 > 应用终止页面,查看应用终止率和终止次数趋势,确认是否需要优化。

2)分析终止原因分布

       在应用终止分布图表中,饼图展示TOP10应用终止原因及占比,表格展示全部原因。根据主要原因分布,判断是内存、CPU还是其他资源导致的应用终止,针对性地优化资源使用。

OOM问题分析

1)发现OOM率上涨

       OOM指应用向ArkTS虚拟机申请内存时,系统检测出内存超过阈值导致的异常退出。在故障指标 > OOM页面,查看OOM率趋势,通过版本对比确认劣化版本。

2)排查OOM TOP问题

       在TOP问题列表中,查看聚合后的问题,包括故障特征ID、问题定界、故障类型、错误类型、故障模块、发生次数、分配内存大小等。重点关注分配内存大小较大和发生次数较高的问题。

3)深入分析堆栈与现场数据

       点击问题进入详情,查看分析报告中的崩溃原因、修复建议、堆栈信息和现场数据。堆栈信息展示结构化处理后的调用栈,现场数据中的页面跟踪还原了OOM发生前的用户操作链路。

资源泄露问题分析

1)发现资源泄露率异常

       资源泄露是指句柄、线程或内存等资源在应用运行过程中未被正确释放,长期占用导致系统异常。在故障指标 > 资源泄漏页面,查看泄漏率趋势,支持分钟级、小时级和天级数据查看。

2)排查泄露TOP问题

       资源泄露目前支持ArkTS内存泄漏、Native内存泄漏、FD泄漏和GPU泄漏四类。在TOP问题列表中,查看泄露类型、故障模块、最大泄漏数等关键信息。点击"查看"进入故障分析。

3)ArkTS内存泄漏分析

       在问题详情的证据链中,分析平台给出最有可能泄漏的对象(RetainedSize异常大或数量异常多),以及泄漏对象的持有链分布和关联对象。根据持有链和修复建议,定位内存泄漏根因。

4)Native内存泄漏分析

       Native泄漏基于堆块分配大小聚合,按累计分配内存从大到小排序,超越阈值识别为疑似泄漏对象。查看主泄漏方法和分配栈信息,支持堆栈分配详情、堆栈树分配和火焰图三种展示方式。内存占比图表展示Native堆的占比情况。


      🔗 官网开发者学堂视频:华为开发者学堂

     🔗 社区DFX专题文章:  华为开发者问答 | 华为开发者联盟

【扫码加入 HarmonyOS DFX 技术交流群】

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐