SDK 开销

了解 Sentry 的 React Native SDK 开销以及如何调整配置以最小化开销。

向应用程序添加新功能或依赖项会增加资源成本,例如 CPU 时间、内存使用和网络带宽等。Sentry SDK 也不例外。本文档旨在透明地展示使用我们的 SDK 可能带来的开销,并帮助你找到最适合你的功能集和配置。

SDK 设计为对用户体验的影响最小化。为此,我们利用一系列工具持续测量和优化实现的性能。

我们还采用各种技术确保不会在热路径上增加系统资源的压力。在移动设备上,这通常意味着我们将处理步骤、I/O 和其他操作卸载到后台线程,或者如果可能的话推迟处理。

如果你发现(例如通过本地性能分析或使用 Sentry 改进应用程序性能)SDK 没有在以下指南范围内运行,请在我们的 SDK 仓库中 提交问题,并确保提供尽可能多的上下文信息。

在正常运行期间,错误监控几乎不会产生开销。一旦发生错误或崩溃,用户体验会受到影响,任何崩溃处理例程都在系统施加的时间限制下运行。这意味着这些实现经过高度优化以尽快完成所需工作。

SDK 还提供了手动捕获事件的方法:captureErrorcaptureMessage。这些方法执行一些复杂操作,例如捕获堆栈跟踪信息,尽管它们也经过高度优化,但在紧循环中调用它们应避免。

如果你激活了这些功能,SDK 将在错误或崩溃时捕获 截图视图层次结构。这会产生微小的开销,在正常运行期间几乎不可察觉。

如果你的应用程序在紧循环中频繁引发错误,可能会导致无法快速处理,进而导致 UI 卡顿,因此请确保适当处理此类情况。

面包屑 通过自动集成或手动添加收集。为了使它们可以随时用于 SDK 生成的每个事件,它们被持续持久化并在高效的缓冲区中管理。这不应该影响用户体验。

捕获过多的面包屑(例如,为所有日志消息创建面包屑)可能会导致显著的性能开销。为缓解此问题,请审查并调整应用程序对面包屑的使用。例如,使用 breadcrumbsIntegration 选项beforeBreadcrumb 钩子 来微调创建的面包屑类型。

请注意,增加最大面包屑数量 不会 提高性能,甚至可能产生负面影响。

如我们在 产品文档中所述,跟踪会增加一些开销,但对应用程序性能的影响应最小化。在典型场景中,预期开销小于应用程序资源利用率的 3%。

如我们在 产品文档中所述,性能分析会增加一些开销,但对应用程序性能的影响应最小化。在典型场景中,预期开销小于应用程序资源利用率的 5%。

如我们在 产品文档中所述,会话重放会增加一些开销,但对应用程序性能的影响应最小化。有关测量开销的更多详细信息,请阅读 此 SDK 的性能开销文档

请注意,此功能仍在开发中。我们正在努力进行性能改进,以缓解已知问题,即活跃的会话重放录制可能会引入慢帧,尤其是在较旧的 iOS 设备上(例如 iPhone 8)。