此页面提供有关开始使用性能监控或使用性能监控功能和工具的故障排除提示。
首先检查故障排除
以下两项检查是在进一步排除故障之前推荐给任何人的一般最佳做法。
1. 检查性能事件的日志消息
检查您的日志消息以确保性能监控 SDK 正在捕获性能事件。
启用调试日志记录,如下所示:
- 在 Xcode(最低 v13.3.1)中,选择Product > Scheme > Edit scheme 。
- 从左侧菜单中选择运行,然后选择参数选项卡。
- 在启动时传递的参数部分中,添加
-FIRDebugEnabled
。
检查您的日志消息是否有任何错误消息。
Performance Monitoring 使用
Firebase/Performance
标记其日志消息,以便您可以过滤日志消息。检查以下类型的日志,这些日志表明性能监控正在记录性能事件:
-
Logging trace metric: TRACE_NAME , FIREBASE_PERFORMANCE_CONSOLE_URL
-
Logging network request trace: URL
-
单击 URL 以在 Firebase 控制台中查看您的数据。数据在仪表板中更新可能需要一些时间。
如果您的应用未记录性能事件,请查看故障排除提示。
2. 检查 Firebase 状态仪表板
检查Firebase 状态仪表板,以防 Firebase 或性能监控发生已知中断。
性能监控入门
如果您刚开始使用性能监控 ( iOS+ | Android | Web ),以下故障排除提示可以帮助解决涉及 Firebase 检测 SDK 或在 Firebase 控制台中显示您的第一个性能数据的问题。
当 Firebase 从您的应用程序接收事件信息(如应用程序交互)时,它可以检测您是否已成功将性能监控 SDK 添加到您的应用程序。通常在启动您的应用程序后 10 分钟内,Firebase 控制台的性能仪表板会显示“检测到 SDK”消息。然后,在 30 分钟内,仪表板会显示初始处理的数据。
如果您将最新版本的 SDK 添加到您的应用程序已经超过 10 分钟,并且您仍然没有看到任何更改,请检查您的日志消息以确保性能监控正在记录事件。尝试如下所述的适当故障排除步骤来解决延迟 SDK 检测消息的问题。
如果您仍在本地开发,请尝试为数据收集生成更多事件:
使用模拟器或测试设备继续开发您的应用程序。
通过在后台和前台之间多次切换您的应用程序、通过跨屏幕导航和/或触发网络请求与您的应用程序交互来生成事件。
确保您的Firebase 配置文件(
Google-Service-Info.plist
) 已正确添加到您的应用程序并且您没有修改该文件。具体检查以下内容:配置文件名未附加其他字符,例如
(2)
。配置文件位于 XCode 项目的根目录中,并已添加到正确的目标中。
配置文件中列出的 Firebase Apple App ID (
GOOGLE_APP_ID
) 对您的应用来说是正确的。在您的 Project settings的Your apps卡片中找到您的 Firebase App ID。
如果您的应用程序中的配置文件似乎有任何问题,请尝试以下操作:
删除您当前在应用程序中拥有的配置文件。
按照这些说明下载新的配置文件并将其添加到您的 Apple 应用程序。
如果 SDK 正在记录事件并且一切似乎都已正确设置,但您仍然没有看到 SDK 检测消息或已处理的数据(2 小时后),请联系 Firebase 支持。
确保未通过
Info.plist
文件中的以下任一标志禁用性能监控 SDK :-
firebase_performance_collection_enabled
-
firebase_performance_collection_deactivated
-
如果您在您的应用中找不到任何被禁用的内容,请联系 Firebase 支持。
性能监控先处理性能事件数据,然后再将其显示在性能仪表板中。
如果自“检测到 SDK”消息出现以来已超过 24 小时,而您仍未看到数据,请检查Firebase 状态仪表板以防已知中断。如果没有中断,请联系 Firebase 支持。
一般故障排除
如果您已成功添加 SDK 并在您的应用中使用性能监控,则以下故障排除提示可帮助解决涉及性能监控功能和工具的一般问题。
如果您没有看到性能事件的日志消息,请尝试以下故障排除步骤:
确保未通过
Info.plist
文件中的以下任一标志禁用性能监控 SDK :-
firebase_performance_collection_enabled
-
firebase_performance_collection_deactivated
-
如果您在您的应用中找不到任何被禁用的内容,请联系 Firebase 支持。
如果您缺少屏幕渲染痕迹的数据,请尝试以下故障排除步骤:
确保您使用的是最新版本的 Apple 平台 SDK (v10.4.0)。屏幕渲染痕迹仅适用于 v5.0.0 或更高版本。
性能监控不会为容器视图控制器(例如
UINavigationController
和UITabBarController
)创建屏幕渲染跟踪。如果仅缺少这些屏幕的数据,则这是预期的行为。
您看到的是自动收集的跟踪的性能数据,而不是自定义代码跟踪的性能数据吗?请尝试以下故障排除步骤:
检查通过Trace API检测的自定义代码跟踪的设置,尤其是以下内容:
- 自定义代码跟踪和自定义指标的名称必须满足以下要求:没有前导或尾随空格,没有前导下划线 (
_
) 字符,最大长度为 32 个字符。 - 必须启动和停止所有跟踪。任何未启动、未停止或在启动前停止的跟踪都不会被记录。
- 自定义代码跟踪和自定义指标的名称必须满足以下要求:没有前导或尾随空格,没有前导下划线 (
检查您的日志消息以确保性能监控正在记录预期的自定义代码跟踪。
如果 Performance Monitoring 正在记录事件,但 24 小时后没有显示任何数据,请联系 Firebase 支持。
如果您丢失了网络请求数据,请尝试以下故障排除步骤:
检查网络库不兼容。性能监控自动收集使用以下网络库的网络请求的指标:
- 对于 Swift:URLSession 和 URLConnection
- 对于 Objective-C:NSURLSession 和 NSURLConnection
请注意,您可以为网络请求添加自定义监控。
请注意以下事项:
根据代码的行为和代码使用的网络库,性能监控可能只报告已完成的网络请求。这意味着可能不会报告保持打开状态的 HTTP/S 连接。
性能监控不会报告具有无效
Content-Type
标头的网络请求。但是,仍然会接受没有Content-Type
标头的网络请求。
您还可以尝试自定义 URL 模式!
常问问题
我们用最近的警报替换了热门问题,作为我们最近引入的警报的后续行动,警报会在超过您设置的阈值时自动通知您。问题现在已弃用并由警报取代。
Performance 卡顶部的应用程序选择器过滤Recent Alerts下的警报条目。仅显示所选应用程序的三个最新警报。
要了解有关警报的更多信息,请参阅为性能问题设置警报。
性能监控支持对超过定义阈值的指标发出警报。为了避免与性能指标的这些可配置阈值混淆,我们删除了为问题配置阈值的功能。
我们用重新设计的集中式用户界面 (UI) 替换了详细信息和指标页面,以改进您解决问题的方式。这个新的故障排除 UI 提供了与 Details 和 Metrics 提供的相同的核心功能。要了解有关故障排除的更多信息,请参阅查看特定跟踪的更多数据。
性能监控从您应用的用户设备收集性能数据。如果您的应用程序有很多用户,或者如果应用程序生成大量性能活动,性能监控可能会将数据收集限制在一部分设备上,以减少已处理事件的数量。这些限制足够高,因此即使事件较少,指标值仍能代表用户的应用程序体验。
为了管理我们收集的数据量,性能监控使用以下采样选项:
设备上速率限制:为防止设备突然发送大量跟踪,我们将设备发送的代码和网络请求跟踪的数量限制为每 10 分钟 300 个事件。这种方法可以保护设备免受可以发送大量性能数据的循环仪器的影响,并防止单个设备扭曲性能测量。
动态采样:性能监控为所有应用程序用户收集每个应用程序大约 1 亿个代码跟踪事件和 1 亿个网络请求跟踪事件。在设备上获取动态采样率(使用 Firebase 远程配置)以确定随机设备是否应捕获和发送跟踪。未被选中进行采样的设备不会发送任何事件。动态采样率是特定于应用程序的,并会进行调整以确保收集的数据总量保持在限制以下。
用户会话从用户设备发送额外的详细数据,需要更多资源来捕获和发送数据。为了最大限度地减少用户会话的影响,性能监控可能还会限制会话数。
服务器端速率限制:为确保应用程序不超过采样限制,性能监控可能会使用服务器端采样来丢弃从设备接收的一些事件。虽然这种类型的限制不会改变我们指标的有效性,但它可能会导致轻微的模式转变,包括以下内容:
- 跟踪的数量可能不同于一段代码被执行的次数。
- 在代码中紧密耦合的跟踪可能各自具有不同数量的样本。
我们通过引入警报取代了“问题”选项卡,当超过您设置的阈值时,它会自动通知您。您不再需要手动检查 Firebase 控制台来确定阈值的状态。要了解警报,请参阅设置性能问题警报。
我们重新设计了 Firebase 控制台的性能监控部分,以便“仪表板”选项卡在一个空间中显示您的关键指标和所有跟踪记录。作为重新设计的一部分,我们删除了“在设备上”和“网络”页面。
“仪表板”选项卡底部的跟踪表具有与“设备上”和“网络”选项卡显示的所有相同信息,但增加了一些功能,包括能够按特定指标的百分比变化对跟踪进行排序。要查看特定跟踪的所有指标和数据,请单击跟踪表中的跟踪名称。
在跟踪表的以下子选项卡中查看您的跟踪:
- 网络请求跟踪(现成的和自定义的)——网络请求子选项卡
- 自定义代码跟踪 -自定义跟踪子选项卡
- 应用程序启动、应用程序在前台、应用程序在后台跟踪 —自定义跟踪子选项卡
- 屏幕渲染痕迹 -屏幕渲染子选项卡
- 页面加载跟踪 -页面加载子选项卡
有关跟踪表和查看指标和数据的详细信息,请访问控制台概述页面 ( iOS+ | Android | Web )。
慢速渲染帧和冻结帧是使用 60Hz 的假定设备刷新率计算的。如果设备刷新率低于 60Hz,则每帧的渲染时间都会变慢,因为每秒渲染的帧数会减少。较慢的渲染时间会导致报告更慢或冻结的帧,因为更多的帧将被渲染得更慢或冻结。但是,如果设备刷新率高于 60Hz,则每一帧的渲染时间都会更快。这可能会导致报告的慢帧或冻结帧更少。这是性能监控 SDK 中的当前限制。
如果您为 Firebase 性能监控启用了 BigQuery 集成,您的数据将在一天结束后的 12 到 24 小时(太平洋时间)导出到 BigQuery。
例如,4 月 19 日的数据将于 4 月 20 日中午 12:00 至午夜(所有日期和时间均为太平洋时间)在 BigQuery 中可用。
Near real-time data processing and display
Firebase Performance Monitoring processes collected performance data as it comes in, which results in near real-time data display in the Firebase console. Processed data displays in the console within a few minutes of its collection, hence the term "near real-time".
To take advantage of near real-time data processing, make sure your app uses a real-time compatible SDK version .
To take advantage of near real-time data processing, you only need to make sure that your app uses a Performance Monitoring SDK version that's compatible with real-time data processing.
These are the real-time compatible SDK versions:
- iOS — v7.3.0 or later
- tvOS — v8.9.0 or later
- Android — v19.0.10 or later (or Firebase Android BoM v26.1.0 or later)
- Web — v7.14.0 or later
Note that we always recommend using the latest version of SDK, but any version listed above will enable Performance Monitoring to process your data in near real time.
These are the SDK versions compatible with real-time data processing:
- iOS — v7.3.0 or later
- tvOS — v8.9.0 or later
- Android — v19.0.10 or later (or Firebase Android BoM v26.1.0 or later)
- Web — v7.14.0 or later
Note that we always recommend using the latest version of SDK, but any version listed above will enable Performance Monitoring to process your data in near real time.
If your app doesn't use a real-time compatible SDK version, you will still see all your app's performance data in the Firebase console. However, the display of performance data will be delayed by roughly 36 hours from the time of its collection.
Yes! Regardless of which SDK version an app instance uses, you'll see performance data from all your users.
However, if you're looking at recent data (less than roughly 36 hours old), then the displayed data is from users of app instances using a real-time compatible SDK version. The non-recent data, though, includes performance data from all versions of your app.
Contacting Firebase Support
If you reach out to Firebase Support , always include your Firebase App ID. Find your Firebase App ID in the Your apps card of your Project settings .