本文档列出了适用于 App Engine 的配额和限制。
配额限制了 Cloud 项目可使用的特定共享 Google Cloud 资源(包括硬件、软件和网络组件)的数量。
配额是执行以下操作的系统的一部分:
- 监控 Google Cloud 产品和服务的使用情况或消费情况。
- 为了确保公平性和减少使用量高峰等原因,您可以限制对这些资源的消耗。
- 维护可自动强制执行规定限制的配置。
- 提供更改配额或请求更改配额的方法。
超过配额时,在大多数情况下,系统会立即阻止对相关 Google 资源的访问,并且您尝试执行的任务将失败。在大多数情况下,应于每个 Cloud 项目的配额,并由使用该 Cloud 项目的所有应用和 IP 地址共享。
App Engine 资源也存在限制。这些限制与配额系统无关。除非另有说明,否则无法更改限制。
App Engine 应用可以消耗不超过特定配额的资源。 您可以在 Google Cloud Console 的“配额详情”页面查看应用的每日资源用量。
配额类型
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.')
您的应用已超出默认限额?如果需要更高的邮件配额,可以使用 SendGrid 来发送电子邮件。如需增加任何其他配额,并且您购买了白银级、黄金级或白金级支持套餐,可以联系您的支持代表,以申请更高的吞吐量限额。
App Engine 柔性环境配额
将应用部署到 App Engine 柔性环境时,会使用一些 Google Cloud 资源。您可能无法修改这些资源,但这些资源会占用您的配额。
例如,您可以在 Compute Engine 资源配额页面下找到服务的实例资源使用量。资源
应用可以在配额限制内使用以下资源。根据计费限额来进行计量的资源用“(计费)”表示。资源量表示 24 个小时内的配额。
其他资源的费用请参考价格页面。
默认 Cloud Storage 存储分区
默认 Cloud Storage 存储分区的每日用量有一个免费配额,具体如下所示。您可以在 Google Cloud Console 的 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 的价格收费。
Datastore 模式的 Firestore (Datastore)
存储的数据量(计费)配额指在 Datastore 和 Blobstore 中为应用存储的所有数据。在 Google Cloud Console 的配额详情屏幕上,“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 会构建一个存储在 Container Registry 中的容器映像。如果映像占用的总存储空间超过免费层级,您将需要付费。
文件
以下配额适用于应用部署文件的总数。
文件 | 上限 |
---|---|
每个应用的默认文件数 | 1 万个文件 如需增加,请联系支持团队。 |
实例小时
系统会根据指定的小时费率按实例运行时间计算实例使用费。
“F”和“B”实例类别(也称为“前端”和“后端”实例类别)有单独的免费配额。请注意,如果使用 App Engine 服务,服务的实例类别将决定适用的具体配额。
资源 | 免费配额 |
---|---|
“F”实例 | 28 免费小时/天 |
“B”实例 | 9 免费小时/天 |
实例小时的累计过程在实例启动时开始,在如下所述的情况下结束,具体取决于您为实例指定的扩缩类型:
- 基本扩缩或自动扩缩:在实例处理完最后一个请求 15 分钟后结束累计。
- 手动扩缩:在实例关停 15 分钟后结束累计。
如果 App Engine 创建的空闲实例数量超出您在 Google Cloud 控制台的“性能设置”标签页中指定的上限,则超出上限的那些实例不会累计到实例小时数中。
日志
Logs API 是在检索日志数据时计量的。
日志提取配额指应用的请求日志和应用日志数据。App Engine 应用的日志记录由 Google Cloud 运维套件提供。如需详细了解费率和限额,请参阅 Google Cloud 运维套件价格。
App Engine“按邮件”对电子邮件使用量计费,会统计发给每个收件人的每封电子邮件。例如,如果将一封电子邮件发送给 10 个收件人,系统会计为 10 封电子邮件。
- 发送的邮件数
- 应用发送的邮件总数。请注意,在您结清应用的第一笔费用之前,“发送的邮件数”的配额上限会保持在免费级别。
- 发送的管理员邮件数
- 应用发送给应用管理员的邮件总数。(每封管理员电子邮件的总大小限额(包括标题、附件和正文)是 16 KB)。
- 发送的邮件正文数据量
- 在电子邮件正文中发送的数据量。
- 发送的附件数量
- 与电子邮件一起发送的附件总数。
- 发送的附件数据量
- 作为电子邮件附件发送的数据量。
资源 | 默认每日限额 | 最大速率 |
---|---|---|
电子邮件收件人数量 | 100 封邮件 | 8 封邮件/分钟 |
电子邮件管理员收件人数量 | 5000 封邮件 | 24 封邮件/分钟 |
发送的邮件正文数据量 | 60 MB | 340 KB/分钟 |
发送的附件数量 | 2000 个附件 | 8 个附件/分钟 |
发送的附件数据量 | 100 MB | 10 MB/分钟 |
您最多可以为 Mail API 添加 50 个授权发件人。
发送的邮件超出每日邮件配额
如果您的应用需要较高的发送邮件的配额,您可以使用具有较高配额的第三方邮件提供商,例如 SendGrid、Mailjet 或 Mailgun。
请求
- 传出带宽(计费)
-
应用响应请求所发送的数据量。
包括:
- 针对应用服务器、静态文件服务器或 Blobstore 的安全请求和非安全请求而提供的数据
- 电子邮件中发送的数据
- URL Fetch 服务发送的传出 HTTP 请求中的数据
- 传入带宽
-
应用从请求中接收的数据量。每个传入的 HTTP 请求不得大于 32 MB。
包括:
- 应用在安全请求和非安全请求中收到的数据
- 上传到 Blobstore 的数据
- URL Fetch 服务接收用来响应 HTTP 请求的数据
- 安全传出带宽
- 应用为响应请求通过安全连接发送的数据量。
- 安全传入带宽
- 应用通过安全连接从请求中接收的数据量。
搜索
下表列出了免费的搜索配额。如需详细了解每种搜索调用,请参阅 Java、Python 和 Go 文档。
系统将根据价格表中的费率收取 Search API 资源的费用。
资源或 API 调用 | 免费配额 |
---|---|
总存储空间(文档和索引) | 0.25 GB |
查询 | 每天 1000 次查询 |
将文档添加到索引中 | 每天 0.01 GB |
应用控制台配额部分显示 API 请求的原始计数。 请注意,在单次调用中将多个文档编入索引时,调用计数按文档数量计算。
Search API 设定这些限额是为了确保服务的可靠性:
- 在一个应用和一个索引中,每分钟的查询执行时间总共为 100 分钟。
- 每分钟添加/删除 15000 个文档
注意:虽然这些限额是按分钟实施的,但 Google Cloud 控制台显示的是每个限额的每日总计值。拥有白银级、黄金级或白金级支持的客户可以联系支持代表来申请更高的吞吐量限额。
Task Queue
当任务执行时,其关联的请求会计入应用的请求配额
以下限额适用于所有任务队列:
资源 | 每日限额 | 最大速率 |
---|---|---|
Task Queue 管理调用次数(使用 Google Cloud 控制台) | 1 万 | 不适用 |
资源 | 默认限额 |
---|---|
最大队列数(包括推送队列和拉取队列,但不包括默认队列) | 100 个队列。 |
注意:任务执行完毕或被删除后,其使用的存储空间就会被释放。您的存储配额是定期更新的,可能不会立即显示回收的空间。如需了解详情,请参阅 Python、Java、Go 或 PHP 文档。
以下限额按类型适用于任务队列:
推送队列限额 | |
---|---|
任务大小上限 | 100 KB |
队列执行速率 | 每个队列每秒 500 次任务调用 |
任务的最大倒计时/ETA | 30 天,从当前日期和时间算起 |
可以批量添加的最大任务数 | 100 个任务 |
在一项事务中可以添加的最大任务数 | 5 个任务 |
默认的最大任务队列数 | 100 个队列。如需增加,请联系支持团队。 |
Cron
以下配额适用于 Cron 作业。
- Cron 作业
- Cron 作业的数量。
资源 | 默认限额 |
---|---|
Cron 作业 | 250 个 Cron 作业 |
URL Fetch
- URL Fetch API 调用次数
- 应用访问 URL Fetch 服务以执行 HTTP 或 HTTPS 请求的总次数。
- 发送的 URL Fetch 数据量
- 在请求中发送至 URL Fetch 服务的数据量。
- 接收到的 URL Fetch 数据量
- 在响应中从 URL Fetch 服务接收到的数据量。该数据量也计入传入带宽配额。
资源 | 每日限额 | 最大速率 |
---|---|---|
UrlFetch API 调用次数 | 8.6 亿次调用 | 66 万次调用/分钟 |
发送的 UrlFetch 数据量 | 4.5 TB | 3600 MB/分钟 |
接收到的 UrlFetch 数据量 | 4.5 TB | 3600 MB/分钟 |