配额和限制

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

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

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

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

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

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

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

Media CDN 资源也有系统限制。系统限制不能更改。

配额

以下配额适用于 Media CDN。如果您需要更高的配额,请与您的 Google Cloud 销售团队联系并申请调整。如需了解详情,请参阅申请配额调整

配置

默认配额
每个项目的 EdgeCacheService 资源数上限 20
每个项目的 EdgeCacheOrigin 资源数上限 30
每个项目的 EdgeCacheKeyset 资源数上限 10

系统限制

以下限制适用于 Media CDN。

配置

限制 备注
每个 EdgeCacheServiceRouteRules 资源数上限 200

每个 EdgeCacheService 最多可定义 200 个 RouteRules 资源。

每个 EdgeCacheServicePathMatchers 资源数上限 50

每个 EdgeCacheService 最多可以定义 50 个 PathMatchers 资源。

每个服务的 SSL 证书数量上限 5 请参阅 SSL 证书的每个项目配额
每个 EdgeCacheKeyset 的公钥数量上限 3 密钥集中的多个密钥可实现密钥轮替。随时间推移移除未使用的密钥。
每个 EdgeCacheKeyset 的验证共享密钥数量上限 3 密钥集中包含多个密钥,旨在实现密钥轮替:您应随着时间的推移移除旧的未使用密钥。

HTTP 标头、请求和状态代码

限制 备注
请求标头大小上限(包括请求路径) 16 KiB 此限额无法提高。

根据底层协议,请求连接要么在未写入响应代码的情况下关闭,要么被拒绝并返回 HTTP 431 Request Header Fields Too Long 响应。

如果启用了日志记录,这些请求会记录为 statusDetails 值为 headers_too_long 的日志。

请求正文大小上限 16 KiB 此限额无法提高。

如果请求的正文大小超出此限制,系统会拒绝该请求并返回 HTTP 413 Content Too Large 状态代码。

响应标头大小上限 约 128 KiB

如果源站响应的标头超出此限制,系统会向客户端发送 HTTP 502 Bad Gateway 状态代码。如果启用了日志记录,这些内容会以 statusDetails 值为 backend_response_headers_too_long 的形式记录。

可缓存对象的大小上限 100 GiB

这是 Media CDN 可以缓存的来源对象的最大大小。较大的对象会被视为不可缓存。

无法缓存的响应大小上限 500 MiB

这是 Media CDN 代理在对象不可缓存时,响应正文中的最大字节数。 不可缓存的响应在达到限制后会被截断。

标头小写转换 始终(适用于媒体 CDN) 对于请求和响应标头的字母大小写,媒体 CDN 遵循 HTTP/2 惯例。

无论使用何种协议,所有标头都会转换为小写。

例如,Host 会变为 hostKeep-Alive 会变为 keep-alive

标头值的大小写不会更改。

API 请求速率限制

如果您需要提高 API 请求的速率限制,则可以查看当前的使用情况并申请提高限制。

限制
EdgeCacheService 的失效次数 每分钟 10 次
每个项目中不在 networkservices 命名空间中的所有调用 每分钟 1,200 次调用
只读:每个项目 GetEdgeCache*ListEdgeCache* 每分钟 100 次
读/写:networkservices 命名空间中未标记为只读的所有内容(按项目) 每分钟 100 次

建议一次提交一个更新请求,例如 createpatchdelete。虽然该 API 会将多个并发请求排入队列,但同时提交这些请求可能会导致延迟显著增加,处理时间延长,因为系统会按顺序处理每个项目。

客户端超时

超时 时长上限 状态代码 说明
Maximum request duration 5 分钟 HTTP 408 Request Timeout 单个请求-响应的最长持续时间。
Header timeout 10 秒 HTTP 408 Request Timeout 客户端必须在多长时间内发送完整的请求标头集。

来源超时

  • connectTimeoutmaxAttemptsTimeout 限制了 Media CDN 查找可用响应的时间。

    这两个超时时间都包括源返回标头以及确定是使用故障切换还是重定向所花费的时间。connectTimeout 针对每次来源尝试单独应用,而 maxAttemptsTimeout 包括连接所有来源尝试(包括故障切换和重定向)所需的时间。重定向后,系统会将其视为尝试连接到来源的额外次数,并计入为配置的来源设置的 maxAttempts

    当 Media CDN 遇到非重定向响应(例如来自重定向源或故障切换源)时,系统会应用 readTimeoutresponseTimeout 值。重定向的来源使用为遇到重定向的 EdgeCacheOrigin 配置的 connectTimeoutreadTimeoutresponseTimeout 值。

  • responseTimeoutreadTimeout 用于控制流式响应的耗时。在 Media CDN 确定要使用上游响应后,connectTimeoutmaxAttemptsTimeout 都不再重要。此时,readTimeoutresponseTimeout 会生效。

无论每个 EdgeCacheOrigin 设置的 maxAttempts 是多少,媒体 CDN 最多会尝试连接所有来源四次。媒体 CDN 使用主 EdgeCacheOrigin 中的 maxAttemptsTimeout 值。每次尝试的超时值(connectTimeoutreadTimeoutresponseTimeout)是针对每次尝试的 EdgeCacheOrigin 进行配置的。

下表介绍了超时字段:

字段 默认值 说明
connectTimeout 5 秒

媒体 CDN 从开始向源发出请求到确定响应是否可用所用的最长时间。实际上,connectTimeout 涵盖的时间从创建请求开始,然后进行 DNS 查找,接着进行 TLS 握手、TCP/QUIC 连接建立,直到获取包含 HTTP 状态代码的响应标头。

超时值必须介于 1 秒和 15 秒之间。

maxAttemptsTimeout 15 秒

尝试连接到来源(包括故障切换来源)的最大总次数,达到此上限后,系统会向客户端返回错误。 如果达到超时限制,系统会先返回 HTTP 504 状态代码,然后再返回响应。

超时值必须介于 1 秒和 30 秒之间。

此设置用于定义所有来源连接尝试(包括故障切换来源)的时长,以便限制客户端必须等待内容开始在线播放的总时长。系统只会使用第一个 maxAttemptsTimeout 值,其中第一个由为给定路线配置的来源定义。

readTimeout 15 秒

单个 HTTP 响应的读取之间等待的最大时长。 readTimeout 的上限为 responseTimeout。 所有 HTTP 响应读取操作都必须在 responseTimeout 设置的截止期限之前完成。超时值必须介于 1 秒和 30 秒之间。如果在响应完成之前达到此超时时间,系统会截断响应并记录日志。

responseTimeout 30 秒

允许完成响应的最长时长。

超时值必须介于 1 秒和 120 秒之间。

时长从收到第一个正文字节时开始计算。如果在响应完成之前达到此超时时间,系统会截断响应并记录日志。

管理配额

出于各种原因,Media CDN 会对资源用量实施配额限制。例如,配额可避免出现意料之外的用量突增,从而为 Google Cloud 用户社区提供保护。配额还可帮助正在通过免费层级探索 Google Cloud 的用户避免中断试用。

所有项目在开始时都具有相同的配额,您可以通过申请更多配额来进行更改。根据您使用产品的情况,一些配额可能会自动增加。

权限

如需查看配额或申请增加配额,Identity and Access Management (IAM) 主账号需要具备以下某个角色:

任务 所需角色
检查项目的配额 以下之一:
修改配额,申请更多配额 以下之一:
  • Project Owner (roles/owner)
  • Project Editor (roles/editor)
  • Quota Administrator (roles/servicemanagement.quotaAdmin)
  • 具有 serviceusage.quotas.update 权限的自定义角色

查看您的配额

控制台

  1. 在 Google Cloud 控制台中,进入配额页面。

    转到“配额”

  2. 如需搜索要更新的配额,请使用过滤表。 如果您不知道配额的名称,请使用此页面上的链接。

gcloud

使用 Google Cloud CLI 运行以下命令来查看您的配额。请将 PROJECT_ID 替换为您自己的项目 ID。

    gcloud compute project-info describe --project PROJECT_ID

如需查看您在某一区域中已使用的配额,请运行以下命令:

    gcloud compute regions describe example-region
    

超出配额时引发的错误

如果在发出 gcloud 命令时超过了配额,gcloud 会显示一条 quota exceeded 错误消息,并返回退出代码 1

如果在发出 API 请求时超出了配额, Google Cloud 会返回以下 HTTP 状态代码:413 Request Entity Too Large

申请更多配额

如需调整大多数配额,请使用 Google Cloud 控制台。如需了解详情,请参阅申请配额调整

资源可用性

每个配额代表您可以创建的特定类型资源的数量上限(如果该资源可用)。必须要注意的是,配额无法保证资源可用性。即使您具有可用配额,如果新资源不可用,您也无法创建新资源。

例如,您的配额可能足以在给定区域中创建新的区域级外部 IP 地址。但是,如果该区域中没有可用的外部 IP 地址,则无法执行此操作。可用区级资源可用性也会影响您能否创建新资源。

导致资源在整个区域不可用的情况非常罕见。但是,地区内的资源有时可能会耗尽,通常不会影响资源类型的服务等级协议 (SLA)。如需了解详情,请参阅资源的相关 SLA。