广告位 · 页头(后台-模块管理-新建模块后替换此区域)

如何查询Firebase数据库的用量和配额限制?

Firebase 提供两种数据库,Realtime Database 和 Cloud Firestore,它们的配额体系和用量查看位置并不相同。许多项目在开发阶段使用免费的 Spark 计划,一旦接近限制就可能导致客户端请求被拒绝,因此主动查询用量对控制成本、避免服务中断非常关键。下面从配额构成、控制台查询和程序化监控三个方向展开。

如何查询Firebase数据库的用量和配额限制?

Firebase数据库配额体系与免费额度

Realtime Database 的配额主要围绕同时连接数、每月下载量、存储空间和数据库数量。免费 Spark 计划允许 100 个并发连接、每月 10 GB 下载和 1 GB 存储,付费 Blaze 计划则把并发连接上限提升到每个数据库 20 万,并按实际下载量计费。需要注意的是,Realtime Database 的写入操作不单独计费,主要看连接和下载,因此频繁写入的小型应用可能不会产生额外费用,但连接数超限会直接拒绝新客户端。

Cloud Firestore 的配额则细分为文档读取、写入、删除三类操作,以及存储和出站流量。Spark 计划每天提供 5 万次读取、2 万次写入和 2 万次删除,恰好适合小型应用或原型验证。Blaze 计划没有每日免费额度,改为按每 10 万次操作收费,同时存储空间按 GB/月计算。明确两种数据库的差异后,查询用量时才能找对入口,否则很容易把 Realtime Database 的下载量误当成 Firestore 的读取次数。

另外,Firebase 还提供身份验证、托管等产品的配额,但这些与数据库用量相互独立,本文只讨论 Realtime Database 和 Firestore。配额是每日重置还是按月计算也需要留意,例如 Firestore 免费操作每日重置,存储每月计算,跨时区可能导致控制台统计略有延迟。了解这些规则后,再看控制台面板时就不会被短期波动迷惑。

通过 Firebase 控制台与 Cloud Console 查询用量

最直观的方式是打开 Firebase 控制台,选择项目后进入左侧的 Firestore Database 或 Realtime Database 菜单。在 Firestore 的 Usage 标签页中,可以看到过去 24 小时、7 天和 30 天的读取、写入、删除次数曲线,以及当前存储占用和索引数量。这个面板适合快速判断当天是否接近免费额度,但它的分辨率较粗,无法精确到具体集合或操作来源。

如果需要更精确的指标或长时间趋势,可以转到 Google Cloud Console,利用 Metrics Explorer 查询 Firestore 或 Firebase 数据库的监控指标。以 Firestore 为例,指标类型包括 firestore.googleapis.com/document/read_count、firestore.googleapis.com/document/write_count 等。Realtime Database 的指标则包含 firebase.googleapis.com/realtime_database/connection_count 和 firebase.googleapis.com/realtime_database/download_bytes。设置好时间范围和聚合方式后,可以按分钟级别查看用量变化,帮助定位流量高峰。

此外,Cloud Console 的配额页面(IAM 与管理 > 配额)列出了当前项目的所有限制和使用情况,适合核对具体配额上限。例如可以查看 Firestore 的每分钟最大写入次数或最大并发连接数。如果某些配额接近用尽,可以在此页面申请提升,无需迁移到 Blaze 计划之外的其他操作。

使用 Admin SDK 与 REST API 程序化查询

对于需要把用量监控接入自有运维系统的团队,可以使用 Cloud Monitoring API。该 API 通过 REST 或 gcloud 命令行查询时间序列数据。以下示例用 curl 调用 Monitoring API 查询最近一小时的 Firestore 读取次数,需要先通过 gcloud auth print-access-token 获取访问令牌。

curl -X POST \
  "https://monitoring.googleapis.com/v3/projects/YOUR_PROJECT_ID/timeSeries:query" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "fetch firestore.googleapis.com/document/read_count",
    "startTime": "2024-01-01T00:00:00Z",
    "endTime": "2024-01-01T01:00:00Z"
  }'

除了 REST API,还可以使用 gcloud 命令行快速查看指标列表和描述,判断哪些指标可用。例如执行以下命令可以列出 Firestore 读取次数指标的定义。

gcloud monitoring metrics list \
  --filter="metric.type=firestore.googleapis.com/document/read_count"

如果关注的是账单费用而非操作次数,可以调用 Cloud Billing API 的 SKU 查询或预算 API。Google Cloud 的预算功能支持在费用达到阈值时发送邮件通知,适合避免超出免费额度后产生意外扣款。设置预算时选择项目、金额和通知渠道即可,不需要编写额外代码。生产环境建议同时配置 Monitoring 告警策略,当读写次数超过预设阈值时触发 PagerDuty 或 Slack 通知。

配额超限的影响与应对措施

当 Realtime Database 或 Firestore 达到免费计划限制后,客户端请求会收到包含错误信息的异常。例如 Firestore 超过每日免费写入次数时,SDK 会抛出 RESOURCE_EXHAUSTED 错误,提示配额已耗尽。Realtime Database 在并发连接超限时,新连接会被拒绝,同时控制台会显示警告。了解这些表现可以帮助开发者在用户反馈问题前主动介入,而不是等到线上故障才去排查。

应对超限有三种思路:升级到 Blaze 计划解除每日限制;优化数据模型减少读写次数;或者实现客户端退避重试。升级计划是最快的方式,但需要注意 Blaze 按量计费,若代码存在循环写入可能迅速消耗预算。优化方面,可以将频繁更新的字段拆到独立文档、使用批量写入减少操作次数,或为 Firestore 设置缓存减少实时读取。

最后,建议将配额查询纳入定期巡检流程。小团队可以每周登录控制台查看一次 30 天趋势,大团队可以通过 Cloud Monitoring API 抓取数据并绘图,配合预算警报实现自动化。只要弄清楚配额的计算方式和查询入口,就能在免费额度和付费计划之间做出合理决策,避免 Firebase 项目突然不可用。

广告位 · 文章底部(后台-模块管理替换此区域)