此页面详细介绍了 Cloud Functions 支持扩容且基于用量的限制。这些限制由 Blaze 随用随付定价方案规定,适用于将函数部署到 Node.js 10 运行时环境的 Firebase 项目。
Blaze 方案免费提供宽裕的调用次数、计算时间和互联网流量额度。但是,部署函数时,系统会对用于函数容器的存储空间收取少量费用。如需了解详情,请参阅 Firebase 常见问题解答。
Firebase 的配额包含四种类型:
资源限制
这些限制会影响您的函数可以使用的资源总量。
时间限制
这些限制会影响函数可以运行的时长。
速率限制
这些限制会影响您调用 Firebase API 来管理函数的速率。
网络限制
这些设置会影响出站连接和实例限制。
下面将更详细地介绍各种不同类型的限制,并指明了 Firebase(第 1 代)和 Firebase(第 2 代)限制之间的差异(如适用)。
资源限制
这些资源限制会影响您的函数可以使用的资源总量。区域范围以项目为单位,每个项目都有自己的限额。
配额 | 说明 | 限制(第 1 代) | 限制(第 2 代) | 能否增加? | 范围 |
---|---|---|---|---|---|
函数的数量 | 每个区域可以部署的函数总数 | 1000 | 1,000 减去已部署的 Cloud Run 服务数量 | 否 | 每个区域 |
部署大小上限 | 单个函数部署的大小上限 | 源文件为 100 MB(压缩后)。 源文件和模块一共 500 MB(未压缩)。 |
不适用 | 否 | 每个函数 |
未压缩 HTTP 请求的大小上限 | 在一个 HTTP 请求中发送到 HTTP 函数的数据量 | 10 MB | 32 MB | 否 | 每次调用 |
未压缩 HTTP 响应的大小上限 | 在一个 HTTP 响应中从 HTTP 函数发送的数据量 | 10 MB | 流式响应为 10 MB。 非流式响应为 32 MB。 |
否 | 每次调用 |
事件驱动函数的事件大小上限 | 在事件中发送到后台函数的数据量 | 10 MB | Eventarc 事件为 512 KB。 旧版事件为 10 MB。 |
否 | 每个事件 |
函数内存的大小上限 | 每个函数实例可以使用的内存量 | 8 GiB | 32GiB | 否 | 每个函数 |
项目内存上限 | 项目可以使用的内存量(以字节为单位)。它按 1 分钟内各个函数实例中用户请求的内存总和来衡量。 | 取决于所选区域。此限制在高容量区域可能较高,在最近打开的区域可能较低。 | 不适用 | 是 | 每个项目和区域 |
项目 CPU 上限 | 项目可以使用的 CPU 量(以毫微 vCPU 为单位)。它按 1 分钟内各个函数实例中用户请求的 CPU 总和来衡量。 | 取决于所选区域。此限制在高容量区域可能较高,在最近打开的区域可能较低。 | 不适用 | 是 | 每个项目和区域 |
时间限制
配额 | 说明 | 限制(第 1 代) | 限制(第 2 代) | 能否增加? | 范围 |
---|---|---|---|---|---|
函数运行时长上限 | 函数在被强制终止之前可以运行的最长时间 | 540 秒 | HTTP 函数为 60 分钟。 事件驱动型函数为 9 分钟。 |
否 | 每次调用 |
速率限制
配额 | 说明 | 限制(第 1 代) | 限制(第 2 代) | 能否增加? | 范围 |
---|---|---|---|---|---|
API 调用次数(读取) | 通过 Firebase API 描述或列出函数的调用次数 | 每 100 秒 5,000 次 | 每 60 秒 1200 次 | 仅第 1 代可增加 | 按项目(第 1 代) 按区域(第 2 代) |
API 调用次数 (WRITE) | 通过 Firebase API 部署或删除函数的调用次数 | 每 100 秒 80 次 | 每 60 秒 60 次 | 否1 | 按项目(第 1 代) 按区域(第 2 代) |
API 调用次数 (CALL) | 对“CALL” API 的调用次数 | 每 100 秒 16 次 | 不适用 | 否2 | 每个项目 |
网络限制
如需了解 Firebase(第 2 代)网络请求和带宽限制,请参阅网络限制。
以下网络限制适用于 Firebase(第 1 代):
- 每个实例每秒的出站连接数:500(无法增加)
- 每个实例每秒的出站 DNS 解析次数:100(无法增加)
可伸缩性
通过 HTTP 调用的 Firebase 函数可以快速扩容以处理传入流量,而后台函数的扩容速度则要慢一些。函数的扩容能力取决于多种因素,包括:
- 函数执行完毕所需的时间(短期运行的函数通常可以扩容以处理更多的并发请求)。
- 函数在冷启动时初始化所用的时间。
- 函数的错误率。
暂时性因素,例如区域负载和数据中心容量。
后台函数的额外配额
配额 | 说明 | 限制 | 能否增加? | 范围 | 产品版本 |
---|---|---|---|---|---|
并发调用次数上限 | 单个函数的最大并发调用次数 示例:如果处理每个事件需要 100 秒,则平均每秒的调用率将限制为 30 次 |
3000 | 是 | 每个函数 | 仅限第 1 代函数 |
调用速率上限 | 单个函数处理事件的最大速率 示例:如果处理一个事件需要 100 毫秒,即使仅平均并行处理 100 个请求,调用速率也将被限制为每秒 1,000 次 |
每秒 1,000 次 | 否 | 每个函数 | 仅限第 1 代函数 |
并发事件数据大小上限 | 单个函数并发调用的传入事件的大小上限 示例:如果事件的大小为 1 MB,处理它们需要 10 秒,则平均速率为每秒 1 个事件,因为在前 10 个事件中的某一个完成处理之前,不会处理第 11 个事件 |
10 MB | 否 | 每个函数 | 第 1 代和第 2 代 |
传入事件吞吐量上限 | 单个函数的传入事件的最大吞吐量 示例:如果事件的大小为 1 MB,即使函数在 100 毫秒内完成,调用速率最高也只能是每秒 10 次 |
每秒 10 MB | 否 | 每个函数 | 第 1 代和第 2 代 |
达到配额限制时
当某个函数用完分配的某种资源的所有配额后,该资源将不再可用,直到相应配额刷新或增加。这可能意味着,在此期间,您的函数和同一项目中的所有其他函数都将无法工作。当函数使用的资源中有某项资源超过配额后,该函数将返回一个 HTTP 500 错误代码且无法执行。
如需将配额增加到超出此处所列默认值的水平,请前往 Firebase 配额页面,选择要修改的配额,然后点击修改配额,在出现提示时提供您的用户信息,并为您选择的每项配额输入新的配额限制。
Firebase CLI 部署的配额限制
对于 Firebase CLI 部署的每个函数,会涉及以下类型的速率和时间限制:
- API 调用(读取)- 每个部署调用 1 次,无论有多少个函数
- 限制:每 100 秒 5,000 次
- API 调用(写入)- 每个函数调用 1 次
- 限制:每 100 秒 80 次
另请参阅 Firebase CLI 参考文档。