Firebase Cloud Functions调用量与Stackdriver数据不符及计费咨询
关于Firebase Cloud Functions调用量与Stackdriver数据差异及计费依据的解答
我帮你梳理下这个问题,这确实是不少Firebase开发者会碰到的疑惑,咱们一步步说:
一、为什么Firebase控制台和Stackdriver(Cloud Monitoring)的数值差3-4倍?
核心原因是两者统计的指标维度完全不同,常见的差异点有这些:
- 指标定义不同:
Firebase控制台显示的「调用量」对应的是firebase.googleapis.com/function/invocations指标,统计的是用户/外部触发的初始请求数——比如你前端发起的HTTP请求、Firestore触发器的单次文档变更事件,都算1次调用。
而你在Stackdriver里看到的「执行量」大概率是cloudfunctions.googleapis.com/function/executions指标,这个统计的是函数实际执行的总次数,包含了:- 自动重试:如果函数执行失败(比如超时、报错),Cloud Functions默认会自动重试3次,每一次重试都会被计入
executions,但不会体现在Firebase的invocations里; - 系统内部触发的执行:比如HTTP函数的浏览器预检OPTIONS请求、Firebase服务与函数之间的内部校验请求,这些不会被Firebase控制台统计,但会被Stackdriver计入执行量。
这就解释了为什么数值会差3-4倍——如果你的函数有一定失败率,重试次数刚好是3次,那1次初始调用就会对应4次执行,数值差正好是4倍。
- 自动重试:如果函数执行失败(比如超时、报错),Cloud Functions默认会自动重试3次,每一次重试都会被计入
- 时间窗口细微偏差:有时候两个控制台的时间范围看起来一致,但采样周期、统计的起始/结束时间有细微差别,也会导致小幅度差异,但这种情况一般不会差到3-4倍,主要还是指标维度的问题。
二、计费以哪个数据为准?
毫无疑问,计费严格以Google Cloud Console/Cloud Monitoring(原Stackdriver)的官方指标为准,Firebase控制台的指标只是给你做业务参考,不能作为计费依据。
具体到你的Blaze套餐:
- 每月200万的免费调用额度,对应的是
invocations指标(即初始请求数),重试产生的执行次数不计入免费额度,会按照付费规则计费; - GB-seconds、CPU-seconds、出站网络这些计费项,全部以Cloud Monitoring中对应的资源使用指标为准,你可以在Cloud Console的「监控」或「计费明细」页面查到精确数据。
三、正确查看所有计费指标的方法
既然Firebase控制台看不到这些细节,你可以直接在Google Cloud Console操作:
- 打开Cloud Console,找到和你的Firebase项目绑定的Cloud Functions服务;
- 进入「监控」页面,在指标选择器里找到对应的计费相关指标:
- 免费额度调用数:选
cloudfunctions.googleapis.com/function/invocations - 实际执行次数(含重试):选
cloudfunctions.googleapis.com/function/executions - GB-seconds:查看
cloudfunctions.googleapis.com/function/instance/memory_usage结合执行时间计算,或者直接看「实例资源使用」中的内存时间累计指标 - CPU-seconds:查看
cloudfunctions.googleapis.com/function/instance/cpu/utilization相关的时间累计指标 - 出站网络:选
cloudfunctions.googleapis.com/function/network/egress_bytes
- 免费额度调用数:选
- 如果你想看精确的账单明细,直接进入Cloud Console的「计费」页面,就能看到每个计费项的使用量、对应费用,以及是否消耗了免费额度。
内容的提问来源于stack exchange,提问作者Wiingaard
相关产品推荐
相关产品推荐

