全新推出 Cloud Firestore(测试版):试用 Firebase 和 Google Cloud Platform 全新推出的规模可扩展且灵活的数据库。详细了解 Cloud Firestore

监控数据库性能

您可以通过几种不同的方式来监控 Firebase 实时数据库的性能,并发现应用中的潜在问题。了解应用的传入和传出带宽以及负载情况还可以让您对帐单上可能有哪些费用有一个大致的概念。此外,如果有些地方看起来不正常,清楚地了解数据库操作也不失为一个有用的问题排查途径。

使用实时数据库监控工具

您可以通过几种不同的工具收集有关实时数据库性能的数据,具体取决于所需的细化程度。

使用实时数据库分析器工具

您可以通过实时数据库分析器工具实时掌握对数据库执行的读/写操作的大致情况。该报告包含以下方面的信息:每项操作的速度和有效负载大小,以及未编入索引的查询。但是,该报告不包含有关连接开销的历史信息或统计数据,并且不能用于估算结算费用

要详细了解如何使用分析器工具,请参阅分析您的数据库

使用 Firebase 控制台

Firebase 控制台中的使用情况标签提供了以下方面的信息:访问数据库的并发连接数、当前存储的数据量、传出带宽(包括协议和加密开销)以及数据库在 1 分钟的时间区间内的负载。虽然使用情况标签可让您更精确地大致了解数据库的整体性能,但是您可能无法进行足够深入的分析,来排查潜在的性能或结算问题。

要详细了解 Firebase 控制台中的使用情况统计信息,请参阅估算计费的使用量

使用 Stackdriver Monitoring

借助 Google Cloud Platform 提供的 Stackdriver Monitoring,您可以使用指标浏览器查看各个性能指标,也可以创建包含图表(显示各种性能指标组合随时间的变化情况)的不同信息中心。实时数据库与 Stackdriver Monitoring 的集成可实现最深层级的细化程度。

要开始使用 Stackdriver Monitoring,请按照 Google Compute Engine 快速入门中的步骤操作。

设置好 Stackdriver Monitoring 后,可使用指标浏览器创建包含图表的信息中心来监控数据库的性能。

GCP 指标列表中包含通过 Stackdriver Monitoring 提供的实时数据库性能指标的完整列表。如需有关使用特定指标找出结算或性能问题的提示,请参阅以下各节。

监控计费的使用量

Firebase 控制台中的使用情况标签以及通过 Stackdriver Monitoring 提供的指标都可以帮助您估算计费的实时数据库使用量。但请注意,Firebase 控制台中以及通过 Stackdriver 提供的使用量统计数据只是估算值。如需详细了解结算,请参阅了解实时数据库结算

要使用 Stackdriver Monitoring 监控计费的使用量,请跟踪以下指标:

  • network/sent_payload_bytes_count:此指标反映了通过数据库操作(包括获取、查询、写入、实时侦听器更新和广播)请求的数据大小,但不包含任何连接开销(协议或加密)。sent_payload_bytes_count 会影响传出带宽费用,但并不反映总计费费用。它代表响应请求时从数据库发送的数据的估算量,但由于它衡量的是所请求的数据的有效负载大小(而非实际发送的数据),因此可能并不一定准确。
  • network/sent_payload_and_protocol_bytes_count:此指标既可反映上述有效负载数据的大小,又可反映连接所需的协议开销(例如 HTTP 标头、WebSocket 框架和 Firebase 实时协议框架)的大小。它不反映安全连接的加密费用。
  • network/sent_bytes_count:此指标反映了通过读取操作从数据库发出的数据总大小的估算值。它包含实际发送到客户端的有效负载数据,以及产生连接费用的协议和加密开销。此指标最能准确地反映实时数据库帐单上的总传出带宽。

  • storage/total_bytes:使用此指标可监控您的数据库中存储的数据量。您在实时数据库中存储的数据会影响您的结算费用。

综合信息中心里图表中的指标,您就可以挖掘出实用的分析洞见,并掌握总体情况。例如,您可以尝试使用以下指标组合:

  • 传出数据:使用 network/sent_bytes_countnetwork/sent_payload_and_protocol_bytes_countnetwork/sent_payload_bytes_count 指标可以找出与导致您帐单上出现意外费用的协议或加密开销有关的潜在问题。如果所请求的数据有效负载的大小与反映连接开销的其他指标之间存在较大差异,建议您排查是否存在可能会导致超时或频繁连接的问题。如果您未使用 TLS 会话票证,则可以尝试实施这类票证以减少恢复连接时产生的 SSL 连接开销。
  • 操作:使用 io/database_load 指标可以了解每种操作类型使用的数据库总负载量。请确保按类型对 io/database_load 进行分组以针对不同的操作类型进行问题排查。
  • 存储:使用 storage/limitstorage/total_bytes 可监控您的存储利用率(相对于实时数据库存储限制)。

请参阅通过 Stackdriver Monitoring 提供的实时数据库指标的完整列表

监控性能

如果您遇到性能方面(包括正常运行时间或延迟)的问题,则可能需要使用 Stackdriver 监控以下指标:

  • io/database_load:使用此指标可以监控在一段时间内处理请求使用了多少可用的数据库带宽。当数据库负载接近可用的总带宽时,就可能会出现性能问题。您还可以查看哪些操作类型使用的负载最多,并相应地排查问题。对于超过一分钟才完成的操作,报告的负载可能会超过 100%。如果一项操作花了数分钟才完成,但操作完成后的报告区间(一分钟)统计了使用的总带宽,那么就会出现这种情况。
  • network/disabled_for_overages:此指标反映了您的实时数据库超出任何带宽或网络限制时可能造成的中断。
  • storage/disabled_for_overages:此指标反映了您的实时数据库超出任何存储限制时可能造成的中断。

综合信息中心里图表中的指标,您就可以挖掘出实用的分析洞见,并掌握总体情况。例如,您可以尝试使用以下指标组合:

  • 操作:使用 io/database_load 指标可以了解每种操作类型使用的数据库总负载量。请确保按类型对 io/database_load 进行分组以针对不同的操作类型进行问题排查。
  • 存储:使用 storage/limitstorage/total_bytes 可监控您的存储利用率(相对于实时数据库存储限制)。您还可以添加 storage/disabled_for_overages 以了解您的应用是否遇到了因存储超限而导致的服务中断。
  • SSL 开销:使用 network/https_requests_count 监控您的数据库收到了多少 SSL 连接请求,还可使用 reused_ssl_session 过滤条件筛选出重复使用了现有 SSL 会话票证的请求。您可以根据 network/sent_bytes_countnetwork/sent_payload_and_protocol_bytes_count 衡量此指标,以监控您的应用是否在高效使用 SSL 会话票证。

您也可以通过 Stackdriver Monitoring 设置提醒,根据实时数据库的指标接收通知。例如,您可以选择在 io/database_load 接近某个特定阈值时收到通知。

请参阅通过 Stackdriver Monitoring 提供的实时数据库指标的完整列表

数据库负载的类型

io/database_load 指标还会提供标签,说明是哪种操作类型产生的负载。以下是可能衡量的操作类型:

  • admin:管理操作,例如设置规则和读取项目元数据。
  • auth:通过服务帐号或 Firebase 身份验证对客户端进行身份验证。
  • client_management:处理并发连接的添加和移除,包括在移除时运行断开连接操作。
  • get_shallow:使用 shallow=true 从 REST GET 中检索数据。
  • get:处理 REST GET 操作。
  • listen:从关联的客户端获取初始数据以执行 ononce 操作。
  • on_disconnect:对客户端断开连接的操作进行注册。
  • put:处理客户端的 set 操作或 REST PUT 操作。
  • transaction:执行来自有条件的 REST 请求的事务或来自客户端的 transaction 操作。
  • update:处理 update 操作或 REST PATCH 请求。

发送以下问题的反馈:

此网页
Firebase 实时数据库
需要帮助?请访问我们的支持页面