案例研究

Datadog 通过 ProfilingManager 提供数百万条深入的性能分析数据

4 分钟阅读时间

众所周知,性能下降问题很难重现,这使得性能下降成为移动开发者的巨大瓶颈。虽然 ANR 率等信号表明了生产环境中出现的具体问题,但要找出导致性能问题的特定代码行,过去需要进行详尽的手动重现或推测性试错实验。

Datadog 与 Google 合作,通过将 ProfilingManager API(适用于 Android 15 及更高版本的设备)集成到其 Real User Monitoring (RUM) 和 Continuous Profiling 平台中,缓解了这种令人沮丧的情况。这种集成改变了调试工作流程,让开发者能够超越表面症状,检测性能瓶颈背后的原因

根据 Datadog 2026 年 6 月的内部数据,Datadog 现在每周在全球范围内处理数百万个生产环境分析报告,并利用此系统级 API。它为工程团队提供了对实际性能的新视角,同时为生产规模的性能监控保持较低的运行时开销。

ProfilingManager 的影响

ProfilingManager 是 Android 15 中引入的系统服务,可让应用直接从生产环境中以编程方式收集性能数据,例如调用堆栈样本、字段轨迹和内存堆转储。此功能将工程范式从被动式手动重现转变为主动式现场分析。

AANDDM_DataDog_Quote_01.png

例如,一款 Google 通讯应用使用字段轨迹来调查其在较新、功能更强大的硬件上的冷启动时间为何较慢。通过深入研究现场收集的轨迹并比较不同设备类型之间的轨迹,工程师发现了一个隐藏的调度问题:在应用启动期间,后台文本转语音服务不必要地进行了预热。轨迹显示,此后台进程占用了设备性能最高的大 CPU 核心,导致应用的主线程在预热期间休眠。

解决 Android 代码级可见性难题

在实施 ProfilingManager 之前,Datadog 的 Real User Monitoring (RUM) 专注于应用的高级运行状况和会话级遥测,以评估用户历程。工程团队可以监控 Android 性能信号,例如首次显示时间、ANR 率、CPU 负载和冻结帧。这些分析数据扩展到了精细的互动,例如网络延迟、触摸事件和主线程挂起。不过,虽然这些数据有效地突出了现场出现的性能瓶颈,但并未提供明确的路径来确定这些故障的根本原因。

AANDDM_DataDog_Quote_02.png

为了解决这个问题,Datadog 需要一个能够直接从生产环境中的设备捕获 Android 轨迹的分析引擎,且对性能的影响极小。在评估了其他方法(例如使用 Android Debug API 编写自己的轨迹处理器)后,该团队选择了 ProfilingManager,因为它是他们评估的分析选项中性能最高的解决方案,并且将采样决策开销分摊给了操作系统。

ProfilingManager 支持多种收集方法,包括 CPU 轨迹、调用堆栈采样、通过 Java 堆转储和原生堆分析报告进行内存分析。它让开发者能够分析生产环境 build、将轨迹文件上传到外部存储空间,并在 Perfetto 轨迹分析器界面中查看这些文件。作为 SaaS 提供商,Datadog 会上传、直观呈现和分析通过其 SDK 收集的这些分析报告,从而提供应用运行状况的统一视图。

通过在统一的观测 API 中集中高保真遥测,ProfilingManager 使 Datadog 及其客户能够通过以下关键技术优势主动监控、调查和修复复杂的 Android 性能下降问题:

  • 精细的会话诊断: ProfilingManager 通过提供直接的操作系统级轨迹数据来增强可调试性,克服了使用系统服务进行自定义日志记录时常见的可见性和对齐问题。如需深入了解,开发者可以从 Datadog 下载这些轨迹,以便在 Perfetto 界面等可视化工具中进行进一步调查。
  • 自动遥测触发器: 通过利用原生系统事件在关键优化点启动轨迹记录,Datadog 减少了构建自定义收集逻辑的需求。虽然最初的发布重点是 APP_FULLY_DRAWN 信号,但已有计划将此可观测性扩大到包括 ANROOMCOLD_START 触发器。
  • 主动轨迹快照: 通过直接与系统级 Perfetto 服务 (traced) 交互,ProfilingManager 利用主动后台记录模型来捕获不可预测的问题。这可确保开发者获得导致性能异常的事件的精确可视化呈现,从而提供超越手动插桩所能实现的分析洞见。
  • 大规模瓶颈检测: Datadog 能够综合来自 Datadog 全球客户群的遥测数据,以发现仅在独特的硬件配置和可变网络环境下才会出现的性能下降问题。
  • 系统强制执行的资源稳定性: 该 API 利用采样轨迹收集来确保性能和用户体验影响保持在不明显的水平。
  • 设备端数据控制:  ProfilingManager 会在分析报告交付给应用之前,过滤掉设备上其他进程中的无关信息。这可以最大限度地减小文件大小,并确保仅提供与应用进程相关的数据。

每周处理数百万个分析报告,以优化实际应用

datadog-profiling-blogpost-final.png
Datadog 的首次显示时间测量示例,其中包含由 ProfilingManager 提供支持的堆栈采样

将系统级分析 API 集成到全球监控 SDK 中需要解决基础设施方面的挑战。由于 ProfilingManager 会生成非常详细的性能轨迹,因此 Datadog 工程团队必须构建一个能够在服务器端大规模解析和分析这些分析报告的流水线。除了分析报告收集之外,Datadog 还强调平衡采样频率与收集足够的数据以生成有关应用的有意义的分析洞见的重要性。Datadog 依赖 ProfilingManager 的内置速率限制作为关键的稳定性保障,以防止过多的遥测请求给用户设备带来过大的负担。

该团队已对 Datadog 自己的原生 Android 应用和一些早期采用者的应用进行了数月的分析,收集了数百万个分析报告,以确保快速、无错误地发布体验并改进其性能检测算法。如今,生产环境集成可以无缝地在各种 Android 设备上进行扩缩。

总结

通过集成 Android 的 ProfilingManager API,Datadog 成功弥合了后端系统与移动客户端应用之间的可见性差距。通过每周处理数百万个分析报告,且设备开销可忽略不计,Datadog 为 Android 开发者提供了必要的代码级分析洞见,以便即时诊断复杂的性能 bug,帮助开发者构建更流畅的应用并改进其应用在 Play 商店中的性能信号。如需将 ProfilingManager API 直接集成到性能可观测性框架中,请参阅我们的 文档

未来,Datadog 计划将 Android 分析数据作为编码代理的一流输入,以自主解决性能瓶颈,从而形成检测和修复之间的反馈环。Datadog 正在努力让开发者能够广泛访问 Android 分析功能。

如需开始使用由 ProfilingManager 提供支持的 Datadog 真实用户监控功能,请访问 Datadog Mobile Real User Monitoring

继续阅读