性能监控收集跟踪以帮助您监控应用程序的性能。跟踪是应用程序中两个时间点之间捕获的性能数据的报告。
您可以创建自己的跟踪以监控与应用中特定代码关联的性能数据。使用自定义代码跟踪,您可以测量您的应用程序完成特定任务或一组任务所需的时间,例如加载一组图像或查询数据库。
自定义代码跟踪的默认指标是其“持续时间”(跟踪的起点和停止点之间的时间),但您也可以添加自定义指标。
在您的代码中,您使用 Performance Monitoring SDK 提供的 API 定义自定义代码跟踪的开始和结束。对于 Android 应用程序,您还可以使用@AddTrace
注释监视特定方法。自定义代码跟踪可以在创建后随时启动,并且它们是线程安全的。
由于为这些跟踪收集的默认指标是“持续时间”,因此有时将它们称为“持续时间跟踪”。
您可以在跟踪表的自定义跟踪子选项卡中查看来自这些跟踪的数据,该子选项卡位于性能仪表板的底部(稍后将在本页了解有关使用控制台的更多信息)。
默认属性、自定义属性和自定义指标
对于自定义代码跟踪,性能监控会自动记录默认属性(应用程序版本、国家/地区、设备等通用元数据),以便您可以在 Firebase 控制台中过滤跟踪数据。您还可以添加和监控自定义属性(例如,游戏级别或用户属性)。您可以进一步配置自定义代码跟踪以记录跟踪范围内发生的与性能相关的事件的自定义指标。例如,您可以为缓存命中和未命中次数或 UI 在一段明显的时间段内变得无响应的次数创建自定义指标。
自定义属性和自定义指标与跟踪的默认属性和默认指标一起显示在 Firebase 控制台中。
添加自定义代码跟踪
使用性能监控跟踪 API添加自定义代码跟踪以监控特定应用程序代码。
请注意以下事项:
- 一个应用程序可以有多个自定义代码跟踪。
- 可以同时运行多个自定义代码跟踪。
- 自定义代码跟踪的名称必须满足以下要求:没有前导或尾随空格,没有前导下划线 (
_
) 字符,最大长度为 100 个字符。 - 自定义代码跟踪支持添加自定义指标和自定义属性。
要启动和停止自定义代码跟踪,请使用类似于以下的代码行包装要跟踪的代码(此示例使用自定义跟踪名称test_trace
):
Kotlin+KTX
// Import these Performance Monitoring classes at the top of your `.kt` file import com.google.firebase.perf.FirebasePerformance; import com.google.firebase.perf.metrics.Trace; val myTrace = Firebase.performance.newTrace("test_trace") myTrace.start() // code that you want to trace myTrace.stop()
Java
// Import these Performance Monitoring classes at the top of your `.java` file import com.google.firebase.perf.FirebasePerformance; import com.google.firebase.perf.metrics.Trace; Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace"); myTrace.start(); // code that you want to trace myTrace.stop();
(可选)使用@AddTrace 监控特定方法
Android 应用程序还支持@AddTrace
注释来检测自定义代码跟踪。使用此功能,跟踪从指定方法的开头开始,并在方法完成时停止,包括该方法调用的任何内容。
例如,您可以创建一个名为 onCreateTrace 的自定义代码跟踪,它会在调用onCreateTrace
onCreate()
方法时运行。
Kotlin+KTX
// Import these Performance Monitoring classes at the top of your `.kt` file import com.google.firebase.perf.FirebasePerformance; import com.google.firebase.perf.metrics.AddTrace; // Add the `@AddTrace` annotation above the method you want to trace @AddTrace(name = "onCreateTrace", enabled = true /* optional */) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) }
Java
// Import these Performance Monitoring classes at the top of your `.java` file import com.google.firebase.perf.FirebasePerformance; import com.google.firebase.perf.metrics.AddTrace; // Add the `@AddTrace` annotation above the method you want to trace @Override @AddTrace(name = "onCreateTrace", enabled = true /* optional */) protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }
将自定义指标添加到自定义代码跟踪
使用 Performance Monitoring Trace API将自定义指标添加到自定义代码跟踪中。
请注意以下事项:
- 自定义指标的名称必须满足以下要求:没有前导或尾随空格,没有前导下划线 (
_
) 字符,最大长度为 100 个字符。 - 每个自定义代码跟踪最多可以记录 32 个指标(包括默认的Duration指标)。
要添加自定义指标,请在每次事件发生时添加一行类似于以下内容的代码。例如,此自定义指标计算应用程序中发生的与性能相关的事件,例如缓存命中和未命中(使用示例事件名称item_cache_hit
和item_cache_miss
以及增量1
)。
Kotlin+KTX
val myTrace = Firebase.performance.newTrace("test_trace") myTrace.start() // code that you want to trace (and log custom metrics) val item = cache.fetch("item") if (item != null) { myTrace.incrementMetric("item_cache_hit", 1) } else { myTrace.incrementMetric("item_cache_miss", 1) } myTrace.stop()
Java
Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace"); myTrace.start(); // code that you want to trace (and log custom metrics) Item item = cache.fetch("item"); if (item != null) { myTrace.incrementMetric("item_cache_hit", 1); } else { myTrace.incrementMetric("item_cache_miss", 1); } myTrace.stop();
为自定义代码跟踪创建自定义属性
使用性能监控跟踪 API将自定义属性添加到自定义代码跟踪。要使用自定义属性,请将代码添加到定义属性并将其与特定自定义代码跟踪相关联的应用程序。您可以在跟踪开始和跟踪停止之间的任何时间设置自定义属性。
请注意以下事项:
自定义属性的名称必须满足以下要求:
- 没有前导或尾随空格,没有前导下划线 (
_
) 字符 - 没有空间
- 最大长度为 32 个字符
- 允许的名称字符为
AZ
、az
和_
。
- 没有前导或尾随空格,没有前导下划线 (
每个自定义代码跟踪最多可以记录 5 个自定义属性。
请确保自定义属性不包含任何可向 Google 识别个人身份的信息。
了解有关此指南的更多信息
Kotlin+KTX
Firebase.performance.newTrace("test_trace").trace { // Update scenario. putAttribute("experiment", "A") // Reading scenario. val experimentValue = getAttribute("experiment") // Delete scenario. removeAttribute("experiment") // Read attributes. val traceAttributes = this.attributes }
Java
Trace trace = FirebasePerformance.getInstance().newTrace("test_trace"); // Update scenario. trace.putAttribute("experiment", "A"); // Reading scenario. String experimentValue = trace.getAttribute("experiment"); // Delete scenario. trace.removeAttribute("experiment"); // Read attributes. Map<String, String> traceAttributes = trace.getAttributes();
跟踪、查看和过滤性能数据
跟踪仪表板中的特定指标
要了解您的关键指标的趋势,请将它们添加到绩效仪表板顶部的指标板。您可以通过查看每周的更改或验证代码中最近的更改是否正在提高性能来快速识别回归。

要将指标添加到指标板,请执行以下步骤:
- 转到 Firebase 控制台中的性能仪表板。
- 单击一个空的指标卡,然后选择一个现有指标以添加到您的看板。
- 单击填充的指标卡上的 以获得更多选项,例如替换或删除指标。
指标板以图形形式和数字百分比变化显示随时间收集的指标数据。
了解有关使用仪表板的更多信息。
查看痕迹及其数据
要查看您的跟踪记录,请转到 Firebase 控制台中的性能仪表板,向下滚动到跟踪记录表,然后单击相应的子选项卡。该表显示了每个跟踪的一些主要指标,您甚至可以按特定指标的百分比变化对列表进行排序。
Performance Monitoring 在 Firebase 控制台中提供了一个故障排除页面,其中突出显示了指标变化,使您可以轻松快速地解决性能问题并将其对您的应用和用户的影响降至最低。当您了解潜在的性能问题时,例如在以下情况下,您可以使用故障排除页面:
- 您在仪表板上选择相关指标,您会注意到一个大的增量。
- 在跟踪表中,您排序以在顶部显示最大的增量,并且您会看到显着的百分比变化。
- 您会收到一封电子邮件警报,通知您存在性能问题。
您可以通过以下方式访问故障排除页面:
- 在指标仪表板上,单击查看指标详细信息按钮。
- 在任何指标卡上,选择 => View details 。故障排除页面显示有关您选择的指标的信息。
- 在跟踪表中,单击跟踪名称或与该跟踪关联的行中的任何指标值。
- 在电子邮件警报中,单击立即调查。
当您单击跟踪表中的跟踪名称时,您可以深入了解感兴趣的指标。单击Filter
按钮以按属性过滤数据,例如:
- 按应用程序版本过滤以查看有关过去版本或最新版本的数据
- 按设备过滤以了解旧设备如何处理您的应用程序
- 按国家/地区过滤以确保您的数据库位置不影响特定区域
了解有关查看跟踪数据的更多信息。
下一步
了解有关使用属性检查性能数据的更多信息。
详细了解如何在 Firebase 控制台中跟踪性能问题。
为降低应用程序性能的代码更改设置警报。例如,如果特定自定义代码跟踪的持续时间超过您设置的阈值,您可以为您的团队配置电子邮件警报。
- 查看用户会话的详细报告,您可以在其中查看在同一会话期间收集的其他跟踪的时间线上下文中的特定跟踪。