抖音 ANR 自动归因平台建设实践
内容提要
本文介绍了抖音在ANR问题管理上的挑战和建设ANR归因渠道的思路,包括单点问题归因、聚合问题归因和劣化问题归因。作者总结了归因渠道的落地效果,并展望了未来的规划。
延伸解读
传统归因的局限与慢消息方案的不足
文章指出,传统依赖系统ANR Trace和ANR Info的归因方式存在明显缺陷:由于消息队列按顺序执行,ANR发生时抓取的堆栈可能已错过问题现场,导致归因不准确。慢消息归因方案虽能监控主线程消息执行并采样抓栈,但面对抖音这类大型应用,ANR常由子线程CPU抢占、内存不足等综合因素导致,主线程慢消息或堆栈未必是根本原因,归因仍不全面。
单点归因的三步拆解逻辑
单点归因分为确认问题区间、粗归因和细归因三步。首先以ANR发生时刻为终点,回溯对应超时时间确定问题区间;粗归因从On-CPU和Off-CPU角度定性分析,区分主线程消息耗时、后台CPU抢占或内存资源异常;细归因则通过插桩与抓栈数据拟合,定位到具体慢函数或高频函数,并结合锁、CPU-Time等精细化数据解释耗时原因。
精准插桩与数据拟合的工程权衡
为降低插桩对包体积和性能的影响,文章提出精准插桩策略,仅对带有耗时特征的函数插桩,如含锁、Native/IO调用或复杂大方法,使插桩数量减少约90%。同时,针对插桩堆栈信息不足的问题,采用插桩与抓栈数据按时间点拟合的方案,补齐缺失的事务和系统堆栈,从而在控制性能损耗的前提下提升归因可消费性。
聚合归因与落地效果
聚合归因通过归因标签、反常问题和事务特征的多维聚合,帮助识别Top问题。渠道落地后,累计发现有效问题88个,修复优化56个,助力抖音和抖音极速版大盘ANR率分别下降13.06%和8.70%。未来规划包括完善内存、渲染等精细化归因能力,优化防劣化系统,并探索结合大模型沉淀专家经验。
Q&A
什么是ANR,它对用户体验有什么影响?
ANR是Android系统定义的应用程序无响应异常,严重影响用户体验,可能导致应用闪退或卡死。
抖音在ANR问题管理上面临哪些挑战?
抖音面临的挑战包括缺乏有效的归因手段、长时间难以解决的疑难问题以及防劣化的压力。
抖音的ANR归因渠道建设思路是什么?
抖音的ANR归因渠道建设思路包括单点问题归因、聚合问题归因和劣化问题归因。
传统的ANR归因计划存在哪些不足?
传统ANR归因计划存在归因不准确、归因能力不足和效率低的问题。
抖音如何进行单点ANR问题的归因?
单点ANR问题的归因分为确认问题区间、粗归因和细归因三个步骤。
抖音的ANR归因渠道建设取得了哪些效果?
渠道建设显著发现并修复了多个有效问题,降低了ANR率,提升了用户体验。