配额和限制

区域 ID

REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。

详细了解区域 ID。

本文档列出了适用于 App Engine 的配额和系统限制。

  • 配额具有默认值,但您通常可以申请调整。
  • 系统限制是无法更改的固定值。

Google Cloud 使用配额来帮助确保公平性并减少资源使用和可用性的激增。配额用于限制您的 Google Cloud 项目可使用多少Google Cloud 资源。配额适用于一系列资源类型,包括硬件、软件和网络组件。例如,配额可以限制对某项服务的 API 调用次数、您的项目并发使用的负载均衡器数量或者您可以创建的项目数量。配额可以防止服务过载,从而保护Google Cloud 用户社区。配额还可以帮助您管理自己的 Google Cloud 资源。

Cloud 配额系统执行以下操作:

在大多数情况下,当您尝试消耗的资源超出其配额允许的范围时,系统会阻止对资源的访问,并且您尝试执行的任务会失败。

配额通常在 Google Cloud 项目级别应用。您在一个项目中使用资源不会影响您在另一个项目中的可用配额。在 Google Cloud 项目中,配额在所有应用和 IP 地址间共享。

如需了解详情,请参阅 Cloud 配额概览。

App Engine 资源也存在限制。系统限制不能更改。

App Engine 应用可以消耗不超过特定配额的资源。 您可以在 Google Cloud 控制台的“配额详情”页面上查看应用的每日资源用量。

配额类型

App Engine 应用设有以下配额类型:

  • 免费配额是指应用能在一定数额内免费使用每项资源。 如需详细了解免费配额,请参阅本页面的资源部分。应用超出资源的免费配额后,您需要为超出的用量付费。

    只有 App Engine 标准环境会提供免费配额。

  • 每日配额可确保单个应用不会过度占用资源而影响其他应用,从而保护 App Engine 系统的完整性。 如果超出这些限制,您会收到错误消息。每日配额每天在美国太平洋时间零点刷新。
  • 每分钟配额可以避免应用在短时间内耗尽资源,同时避免其他应用垄断某项资源。如果您的应用消耗资源的速度过快并耗尽了每分钟配额, Google Cloud 控制台中配额页面上相应配额的旁边会出现“受限”一词。对达到每分钟限额的资源所提的请求会被拒绝。

Project Owner 和 Billing Administrator 可以为项目启用结算功能。

如需详细了解当超出配额时会出现什么情况,以及如何处理此类状况,请参阅当资源耗尽时。

提示:每分钟配额上限可以满足高流量水平的需求,足以应对新闻报道了您的网站后带来的流量高峰。如果您认为某项配额达不到此要求,请在问题跟踪器中提交反馈。请注意,提交反馈并不是申请增加配额,但这可帮助我们了解哪项配额可能设置得太低,无法满足一般用途。

如果您预计流量将达到极高水平,或者如果出于某种原因您的应用需要特别高的配额(例如由于重大产品发布或大型负载测试),我们建议您注册支持套餐。

资源如何补充

App Engine 会参照系统配额跟踪您的应用使用资源的情况。 在每个日历日开始时,App Engine 都会重置所有资源计量结果(不包括“存储的数据量”,因为此指标始终表示数据存储区的使用量)。

每日配额每天在美国太平洋时间零点补充。每分钟配额每隔 60 秒刷新一次。

当资源耗尽时

当应用用完分配的某项资源时,资源就会变为不可用,直到配额获得补充为止。这可能意味着在配额得到补充之前,您的应用将无法工作。

对于启动请求所需的资源,当资源耗尽时,App Engine 默认会针对请求返回 HTTP 403 或 503 错误代码,而不是调用请求处理程序。这一行为适用于实例小时资源。

提示:您可以对应用进行配置,使其在超出配额时显示自定义错误页面。如需了解详情,请参阅 Python(2.7、3)Java、Go、PHP(5.5、7)或 Node.js 的配置文件参考文档。

对于所有其他资源,如果应用在资源耗尽后尝试使用资源,将会导致异常。应用可以捕获并处理此异常,比如向用户显示友好的错误消息。在 Python API 中,此异常为 apiproxy_errors.OverQuotaError。在 Java API 中,此异常为 com.google.apphosting.api.ApiProxy.OverQuotaException。在 Go API 中,appengine.IsOverQuota 函数会报告错误是否表示因可用配额不足而导致 API 调用失败。

以下示例说明了如何捕获 OverQuotaError,它可能在超过电子邮件相关配额时由 SendMessage() 方法引发:

try:
    mail.SendMessage(to='test@example.com', from='admin@example.com',
            subject='Test Email', body='Testing')
except apiproxy_errors.OverQuotaError, message:
    # Log the error. logging.error(message)
    # Display an informative message to the user.
    self.response.out.write('The email could not be sent. '
            'Please try again later.')

您的应用已超出默认限额?您可以与 Cloud Customer Care 团队联系,以申请更高的吞吐量限额。如果需要更高的邮件配额,可以使用 SendGrid 来发送电子邮件。

资源

应用可以在配额限制内使用以下资源。根据计费限额来进行计量的资源用“(计费)”表示。资源量表示 24 个小时内的配额。

其他资源的费用请参考价格页面。

服务、版本和实例

您可以部署的服务和版本的最大数量取决于应用的价格方案。柔性环境和标准环境共享相同的服务和版本限制。例如,如果一个应用中同时有标准版和柔性版,则这些版本会计入同一限制。

限制 免费应用 付费应用
每个应用的服务数上限 5 210
每个应用的版本数上限 15 210

每项采用基本扩缩或手动扩缩的服务的实例数量也有限制:

每个手动/基本扩缩版本的实例数上限
免费应用 付费应用(美国) 付费应用(欧盟)
20 25(对于 us-central,则为 200) 25

每个项目和区域可运行的标准版本中的实例数量也存在限制。服务的实例类别决定了系统会应用哪个限制,以及该服务的实例在配额用量中所占的部分。例如,1 个 F4 实例计为 4 个标准化前端实例。

您可以在“IAM 配额”页面中查看实例数量配额用量。

说明 限制 能否增加?
每个项目和区域在 1 分钟内衡量的前端实例数上限 取决于所选区域。此限制在高容量区域可能较高,在最近打开的区域可能较低。 是
每个项目和区域在 1 分钟内测量的后端实例数上限 取决于所选区域。此限制在高容量区域可能较高,在最近打开的区域可能较低。 是

注意:您可以按照此页面中所述的步骤申请更高的限额。

应用网址中的字符数也存在限制。
说明 限制
VERSION-dot-SERVICE-dot-PROJECT_ID 网址的项目网址中的字符数上限 63

默认 Cloud Storage 存储桶

默认 Cloud Storage 存储桶的每日用量有一个免费配额,具体如下所示。您可以在 Google Cloud 控制台的 App Engine 设置页面中为项目创建此免费默认存储桶。

使用默认存储分区时需遵循以下配额。有关这些配额的说明,请参阅 Cloud Storage 多区域存储桶的价格。

资源 默认限额
默认 Cloud Storage 存储桶存储的数据 前 5 GB 免费;没有上限
默认 Cloud Storage 存储桶 A 类操作 每天的前 2 万次免费;没有上限
默认 Cloud Storage 存储桶 B 类操作 每天的前 5 万次免费;没有上限
默认 Cloud Storage 存储桶网络出站流量 前 1 GB 免费;没有上限

Blobstore

使用 Blobstore 时需遵循以下配额。

Blobstore 存储的数据量
Blobstore 中存储的数据总量。适用于付费和免费应用。
资源 默认限额
Blobstore 存储的数据量 前 5 GB 免费;没有上限

代码和静态数据存储

静态数据限额
在除 Go 之外的所有语言中,单个静态数据文件不得大于 32 MB。Go 的数据文件大小限额是 64 MB。
总存储空间
存储配额适用于应用所有版本所存储的全部代码和静态数据。已存储的代码和静态文件的总大小列在主信息中心表格内。各个应用的大小分别显示在“版本”和“后端”屏幕上。对于超出 1 GB 后存储的任何应用代码和静态数据,会按每月每 GB $ 0.026 的价格收费。
美国/欧洲
资源 费用
代码和静态数据存储 - 最初的 1 GB 免费
代码和静态数据存储 - 超过 1 GB 0.026/GB/月
亚洲(日本)
资源 费用
代码和静态数据存储 - 最初的 1 GB 免费
代码和静态数据存储 - 超过 1 GB 0.023/GB/月">

Datastore 模式的 Firestore (Datastore)

存储的数据量(计费)配额指在 Datastore 和 Blobstore 中为应用存储的所有数据。在 Google Cloud 控制台的配额详情屏幕上,“Datastore”部分中的其他配额专指 Datastore 服务。

存储的数据量(计费)

数据存储区实体、相应索引和 Blobstore 中存储的数据总量。

必须要注意的是,存储在数据存储区中的数据可能会产生大幅开销。此开销取决于关联属性的数量和类型,包括内置和自定义索引所使用的空间。存储在数据存储区中的每个实体都需要以下元数据:

  • 实体键,包括种类、ID 或键名称,以及实体祖先的键。
  • 每个属性的名称和值。因为数据存储区无架构,所以对于给定的任一实体,每个属性的名称都必须和属性值一起存储。
  • 引用此实体的任何内置和自定义的索引行。每一行都包含实体种类、任意数量的属性值(具体取决于索引定义)以及实体键。
索引数
因应用而存在的 Datastore 索引的数量。其中包括过去创建,现已不再出现在应用配置中,但尚未删除的索引。如需详细了解限额信息,请参阅 Datastore 限额页面。
写入操作次数
Datastore 写入操作的总次数。
读取操作次数
Datastore 读取操作的总次数。
小规模操作次数
Datastore 小规模操作的总次数。小规模操作包括用于分配 Datastore ID 的调用操作或仅限于键的查询。
资源 默认限额
存储的数据量(计费) 1 GiB 免费;无上限。
超过免费配额的部分,适用结算费率。
索引数 200
实体读取次数 5 万免费;无上限。
超过免费配额的部分,适用结算费率。
实体写入次数 2 万免费;无上限。
超过免费配额的部分,适用结算费率。
实体删除次数 2 万免费;无上限。
超过免费配额的部分,适用结算费率。
小规模操作次数 无限制

注意:由 Datastore Admin 和 Datastore Viewer 生成的 Datastore 操作计入应用配额。

部署

在每个 App Engine 应用中,您每天最多可以部署 10000 次。

部署时,Cloud Build 会构建一个容器映像,并将该映像存储在 Artifact Registry 中。如果映像占用的总存储空间超过免费层级,您将需要付费。

文件

以下配额适用于应用部署文件的总数。

文件 最大值
每个应用的默认文件数 1 万个文件
如需增加,请联系支持团队。

实例小时

系统会根据指定的小时费率按实例运行时间计算实例使用费。

“F”和“B”实例类别(也称为“前端”和“后端”实例类别)有单独的免费配额。请注意,如果使用 App Engine 服务,服务的实例类别将决定适用的具体配额。

资源 免费配额
F1 实例 每天 28 个免费实例小时
B1 实例 每天 9 个免费实例小时

实例小时的累计过程在实例启动时开始,在如下所述的情况下结束,具体取决于您为实例指定的扩缩类型:

  • 基本扩缩或自动扩缩:在实例处理完最后一个请求 15 分钟后结束累计。
  • 手动扩缩:在实例关停 15 分钟后结束累计。

如果 App Engine 创建的空闲实例数量超出您在 Google Cloud 控制台的“性能设置”标签页中指定的上限,超出上限的那些实例不会累计到实例小时数中。

日志

Logs API 是在检索日志数据时计量的。

日志提取配额指应用的请求日志和应用日志数据。App Engine 应用的日志记录由 Google Cloud Observability 提供。如需详细了解费率和限制,请参阅 Google Cloud Observability 价格。

邮件

您可以在 IAM 配额页面上查看 Mail API 使用情况。

注意:如需在 IAM 配额页面上查看应用的配额使用情况,请确保为项目启用了 App Engine 报告服务。如果您无法启用该服务,请检查您的权限和 constraints/serviceuser.services 组织政策限制条件。

注意:您可以按照此页面中所述的步骤来申请更高的限额。