此页面根据 Blaze 即用即付定价计划详细介绍了 Cloud Functions 的可扩展的、基于使用的限制。这些限制适用于将函数部署到 Node.js 10 运行时环境的 Firebase 项目。
Blaze 计划免费提供大量调用、计算时间和互联网流量。但是,函数部署会产生用于函数容器的存储空间的小规模费用。有关详细信息,请参阅 Firebase常见问题解答。
Google Cloud Functions 的配额包括 3 个方面:
资源限制
这些会影响您的函数可以消耗的资源总量。
时间限制
这些会影响事物可以运行多长时间。
速率限制
这些会影响您可以调用 Cloud Functions API 的速率和/或可以使用资源的速率。您可以将速率配额视为“随时间变化的资源”。
下面更详细地描述了不同类型的限制。 Cloud Functions(第 1 代)和 Cloud Functions(第 2 代)限制之间的差异会在适用的地方注明。
资源限制
资源限制会影响您的函数可以消耗的资源总量。区域范围以项目为单位,每个项目都有自己的限制。
配额 | 描述 | 限制(第一代) | 限制(第二代) | 可以增加 | 范围 |
---|---|---|---|---|---|
功能数量 | 每个区域可以部署的函数总数 | 1,000 | 1,000 减去已部署的 Cloud Run 服务数 | 不 | 每个地区 |
最大部署大小 | 单个功能部署的最大尺寸 | 100MB(压缩)用于源。 500MB(未压缩)用于源代码和模块。 | 不适用 | 不 | 每个功能 |
最大未压缩 HTTP 请求大小 | 在 HTTP 请求中发送到 HTTP 函数的数据 | 10MB | 32MB | 不 | 每次调用 |
最大未压缩 HTTP 响应大小 | 在 HTTP 响应中从 HTTP 函数发送的数据 | 10MB | 10MB 用于流式响应。 32MB 用于非流媒体响应。 | 不 | 每次调用 |
事件驱动函数的最大事件大小 | 事件中发送到后台函数的数据 | 10MB | 512KB 用于 Eventarc 事件。 10MB 用于遗留事件。 | 不 | 每个事件 |
最大函数记忆 | 每个函数实例可以使用的内存量 | 8GiB | 16GiB | 不 | 每个功能 |
时间限制
配额 | 描述 | 限制(第一代) | 限制(第二代) | 可以增加 | 范围 |
---|---|---|---|---|---|
最大功能持续时间 | 函数在被强制终止之前可以运行的最长时间 | 540 秒 | HTTP 函数 60 分钟。 事件驱动函数 10 分钟。 | 不 | 每次调用 |
速率限制
配额 | 描述 | 限制(第一代) | 限制(第二代) | 可以增加 | 范围 |
---|---|---|---|---|---|
API 调用(阅读) | 通过 Cloud Functions API 调用以描述或列出函数 | 每 100 秒 5000 | 每 60 秒 1200 | 仅适用于第一代 | 每个项目(第一代) 每个区域(第二代) |
API 调用(写入) | 通过 Cloud Functions API 调用部署或删除函数 | 每 100 秒 80 次 | 每 60 秒 60 次 | 1号 | 每个项目(第一代) 每个区域(第二代) |
API 调用 (CALL) | 调用“调用”API | 每 100 秒 16 次 | 不适用 | 2号 | 每个项目 |
可扩展性
由 HTTP 调用的 Cloud Functions 可以快速扩展以处理传入流量,而后台函数则可以逐渐扩展。功能的扩展能力取决于几个因素,包括:
后台功能有额外的限制,如下所述。这些限制不适用于HTTP 函数。后台功能的额外配额
配额 | 描述 | 限制 | 可以增加 | 范围 |
---|---|---|---|---|
最大并发调用 | 单个函数的最大并发调用数 示例:如果处理每个事件需要 100 秒,则调用率将限制为平均每秒 30 次 | 3,000 | 不 | 每个功能 |
最大调用率 | 单个函数处理的事件的最大速率 示例:如果处理一个事件需要 100 毫秒,调用率将被限制为每秒 1000 次,即使平均只有 100 个请求被并行处理 | 每秒 1000 个 | 不 | 每个功能 |
最大并发事件数据大小 | 单个函数并发调用的传入事件的最大总大小 示例:如果事件大小为 1MB 并且处理它们需要 10 秒,则平均速率将为每秒 1 个事件,因为第 11 个事件将在前 10 个事件中的一个处理完成之前处理 | 10MB | 不 | 每个功能 |
传入事件的最大吞吐量 | 单个函数传入事件的最大吞吐量 示例:如果事件的大小为 1MB,则调用速率最多为每秒 10 次,即使函数在 100 毫秒内完成也是如此 | 每秒 10MB | 不 | 每个函数 |
当您达到配额限制时
当一个函数消耗所有分配的资源时,该资源将变得不可用,直到刷新或增加配额。这可能意味着您的功能和同一项目中的所有其他功能在此之前将无法使用。当其中一个资源超出配额且函数无法执行时,函数将返回 HTTP 500 错误代码。
要将配额增加到此处列出的默认值之上,请转到Cloud Functions 配额页面,选择您要修改的配额,单击EDIT QUOTAS ,在出现提示时提供您的用户信息,然后为您选择的每个配额输入新的配额限制。
Firebase CLI 部署的配额限制
对于 Firebase CLI 部署的每个函数,这些类型的速率和时间限制会受到影响:
- API 调用 (READ) - 每个部署调用 1 次,无论函数有多少
- 限制:每 100 秒 5000
- API 调用(写入)- 每个函数调用 1 次
- 限制:每 100 秒 80 次
另请参阅Firebase CLI 参考。