配额和限制

本文档介绍 Cloud Functions for Firebase 的配额限制。

Google Cloud Functions 的配额包含 3 个方面:

  • 资源限制

    这些限制会影响您的函数可以使用的资源总量。

  • 时间限制

    这些限制会影响函数的运行时长。

  • 速率限制

    这些限制会影响您调用 Cloud Functions API 的速率和/或使用资源的速率。您可以将速率配额视为“一段时间内的资源数量”。

下面将更详细地介绍各种不同类型的限制。

资源限制

配额 说明 限制 可以增加 范围
函数的数量 每个项目可以部署的函数总数 1000 个 每个项目
部署大小上限 单个函数部署的大小上限 源文件为 100MB(压缩后)。
源文件和模块一共 500MB(未压缩)。
每个函数
未压缩 HTTP 请求的大小上限 在一次 HTTP 请求中发送到 HTTP 函数的数据 10MB 每次调用
未压缩 HTTP 响应的大小上限 在一次 HTTP 响应中从 HTTP 函数发送的数据 10MB 每次调用
后台函数的事件大小上限 在事件中发送到后台函数的数据 10MB 每个事件
函数内存的大小上限 函数可以使用的内存量 2048MB 每个函数

时间限制

配额 说明 限制 可以增加 范围
函数运行时长上限 函数在被强制终止之前可以运行的最长时间 540 秒 每次调用
构建时间上限 所有构建操作可以执行的最长时间。函数构建发生在部署过程中。 每天 120 分钟 每个项目
后台函数处于非活跃状态的时间上限 后台函数在无调用的情况下可被保留的最长时间。在此期间一直没被调用的函数可能会进入一种冬眠状态(在此状态下,新事件不会再触发这些函数)。如果发生这种情况,这些函数必须重新进行部署才能再次生效。
注意:这种非活动状态不会以任何方式反映在界面、CLI 或 API 中。
30 天 每个函数

速率限制

配额 说明 限制 可以增加 范围
每秒函数调用次数 一秒钟内函数调用的次数。如果超过此配额,所有函数都将暂停,直到下一个配额周期到来 每 100 秒 4000 万次 每个区域
GHz-秒 所有正在运行的函数使用的 GHz-秒数量。例如,一个使用 256MB 内存(对应于 400MHz CPU,具体请参阅计算时间定价)的函数运行 1 秒钟,将会用掉 0.4 GHz-秒。系统会将函数运行的时长向上取整到 100 毫秒的倍数。 每 100 秒 10 万 GHz-秒 每个区域
每日 GHz-秒数量 每天所有运行的函数使用的 GHz-秒数量。 每天 1000 万 GHz-秒 每个项目
API 调用次数(读取) 通过 Cloud Functions API 描述或列出函数的调用次数 每 100 秒 5000 次 每个项目
API 调用次数(写入) 通过 Cloud Functions API 部署或删除函数的调用次数 每 100 秒 80 次 每个项目
API 调用次数(调用) 对“call”API 的调用次数 每 100 秒 16 次 每个项目
入站套接字数据量 传入到所有正在运行的函数中的数据量。例如,从 Google Cloud Storage 下载文件的函数所使用的数据量将计入此限制中。 每 100 秒 10 GB 每个区域
出站套接字数据量 从所有正在运行的函数传出的数据量,不包括 HTTP 响应数据 每 100 秒 10 GB 每个区域
套接字连接次数 尝试建立新的出站套接字连接的次数 每 100 秒 100 万次 每个区域
DNS 解析次数 尝试解析 DNS 中的域名的次数;缓存结果不计入此配额 每 100 秒 4 万次 每个项目

扩容

通过 HTTP 调用的 Cloud Functions 函数可以快速扩容至所需的调用速率,而后台函数的扩容速度则要慢一些。对于后者而言,扩容能力取决于函数的运行时长,运行时间较长的函数会扩容得稍慢一点。

无论哪种函数类型,其最大扩容能力均受到上述速率限制的约束。请注意,部分限制只适用于各个单独的函数,这种情况可以通过部署多个函数来突破限制,而另一些限制则适用于整个项目。

后台函数有如下所述的额外限制。这些限制不适用于 HTTP 函数

后台函数的额外配额

配额 说明 限制 可以增加 范围
最大并发调用次数 单个函数的最大并发调用次数
例如:如果处理每个事件需要 100 秒,则调用速率将被限制为平均每秒 10 次
1000 次 每个函数
最大调用速率 单个函数处理事件的最大速率
例如:如果处理一个事件需要 100 毫秒,那么即使只并行处理平均 100 个请求,调用速率也将被限制为每秒 1000 次
每秒 1000 次 每个函数
并发事件数据大小上限 单个函数的并发调用传入事件总大小上限
例如:如果事件大小为 1MB 并且处理这些事件需要 10 秒钟,则平均速率限制将是每秒 1 个事件,这是因为只有在处理完前 10 个事件中的一个事件之后,函数才会处理第 11 个事件
10MB 每个函数
传入事件最大吞吐量 单个函数的传入事件最大吞吐量
例如:如果事件大小为 1MB,那么即使函数在 100 毫秒内执行完毕,调用速率也最多只能是每秒 10 次
每秒 10MB 每个函数

达到配额限制时

当某个函数使用完所有已分配的资源时,直到系统刷新或增加了配额后,函数才能再使用该资源。这可能意味着在此之前,您的函数和同一项目中的所有其他函数都将无法工作。当其中一个资源超过配额并且函数无法执行时,该函数将返回一个 HTTP 500 错误代码。

要将配额增加到超出此处所列默认值的水平,请转到 Cloud Functions 配额页面,选择要修改的配额,然后点击修改配额,在出现提示时提供用户信息,并为您选择的每项配额输入新的配额限制。

Firebase CLI 部署的配额限制

对于 Firebase CLI 部署的每个函数,会涉及以下类型的速率和时间限制:

  • API 调用(读取)- 每个部署调用 1 次,无论有多少个函数
    • 限制:每 100 秒 5000 次
  • API 调用(写入)- 每个函数调用 1 次
    • 限制:每 100 秒 80 次
  • 编译时间上限 - 每个函数几分钟,具体取决于大小
    • 限制:每天 120 分钟

另请参阅 Firebase CLI 参考

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面