优化 Cloud Run 服务可使资源分配与实际需求保持一致,从而减少支出。实施经济实惠的配置可防止过度预配,同时保持服务可靠性和性能。没有一种成本优化解决方案能够适用于所有情况。 请务必监控您的需求、预算和资源,以确定最适合您的方案。
本文档中概述的最佳实践专门针对 Cloud Run。这些不包括其他 Google Cloud 产品。
资源配置
优化服务费用需要考虑许多不同的配置。您可以根据需要定制这些配置,以创建可靠且经济高效的服务。
选择适当的地区
服务的部署位置会影响总费用。Cloud Run 采用两层级区域价格模式。与层级 2 区域相比,层级 1 区域的每个 vCPU 和内存费用较低,因此请考虑部署到层级 1 区域。
需要进行身份验证
配置 Cloud Run 服务时,您可以从以下两个身份验证选项中选择一个:
- 允许公开访问:无需进行身份验证检查。
- 需要身份验证:只有经过身份验证的用户才能访问您的 Cloud Run 服务。
我们建议您要求进行身份验证,除非您有允许公开访问的特定需求。这样可以防止出现可能产生费用的不必要请求。
如果您使用 Identity-Aware Proxy (IAP) 管理用户,IAP 可能会产生相关费用。
比较基于实例的结算方式与基于请求的结算方式
Cloud Run 服务支持两种结算设置:
- 基于请求的结算方式(默认):您需要按请求付费,此外,还需为请求处理期间消耗的 vCPU 和内存支付更高的每秒费率。
- 基于实例的结算方式:您需要为实例的整个生命周期付费。无需按请求付费,并且 vCPU 和内存的每秒费率较低。
对于流量稳定、变化缓慢的服务,请考虑使用基于实例的结算方式。较低的计算费率和无需按请求付费所节省的费用,超过了为请求之间的空闲时间付费的费用。对于流量偶尔出现、突发或激增的服务,请考虑使用基于请求的结算方式。如果您仍不确定要使用哪种结算设置,请参阅 Recommender。Recommender 会查看 Cloud Run 服务在过去一个月内接收的流量,如果基于实例的结算方式费用更低,则建议将基于请求的结算方式改为基于实例的结算方式。
在服务级别配置服务伸缩
如需建立费用安全基准,请为您的服务配置实例数上限。设置较高的实例数上限会优先考虑可用性,但会因意外流量高峰或配置错误而带来潜在的结算风险。您应在最初部署服务时在服务级配置此设置,以建立费用基准。如需了解其他费用控制工具,请参阅资源分配配额或结算预算和提醒。
优化 CPU 和内存利用率
Cloud Run 服务的费用受其 CPU/内存配置、服务活跃时长等因素的影响。过度预配资源可能会增加费用。如需确定哪种配置最适合您的服务,请执行以下操作:
- 建立基准配置。
- 在 Cloud Monitoring 中测试 CPU 和内存利用率指标时,监控您的指标。
- 根据需要调整配置。
如果 CPU 利用率在峰值负载下始终较低,请考虑减少 vCPU 分配。如果延迟时间较长,请考虑增加 vCPU 分配。
如果内存利用率始终较低,请考虑减少分配的内存。如果延迟时间较长且内存利用率接近 100%,请考虑增加分配的内存。如果您遇到内存不足 (OOM) 错误,则应增加分配的内存或修改应用,以防止内存泄漏或减少内存用量。请参阅 Cloud Monitoring 信息中心,更好地了解您的内存利用率。
配置 GPU
所有使用 GPU 的 Cloud Run 服务都必须配置基于实例的结算方式。这意味着,您需要为 Cloud Run 实例的整个生命周期付费,即使没有传入请求也是如此。GPU 所需的最低 CPU 和内存配置也会影响 Cloud Run 服务的费用。默认情况下,GPU 可用区级冗余处于开启状态。关闭 GPU 可用区级冗余会降低每 GPU 秒的费用,但无法保证在故障切换场景中预留容量。
优化网络费用
为服务配置网络选项时,请考虑以下事项:
- 将资源放在同一位置:尽量将 Cloud Run 服务部署在与后端数据库(如 Cloud SQL 或 Firestore)和 Cloud Storage 存储桶相同的区域。同一区域内的 Google Cloud 资源之间的数据传输是免费的。
- 切换到直接 VPC 出站流量:如果您要安全地将流量路由到内部 VPC 网络资源,请考虑从无服务器 VPC 访问通道连接器切换到直接 VPC 出站流量。直接 VPC 出站流量可扩缩到零,从而消除与连接器实例关联的基准计算开销和空闲费用。
- 使用 Cloud CDN:通过在 Cloud Run 服务前面放置 Cloud CDN,分流静态资源和高度可缓存的内容。从边缘传送数据比直接从 Cloud Run 支付标准互联网出站流量费用要便宜得多。
- 监控互联网出站流量:入站流量(入站流量)始终免费,您每月可在北美境内获得 1 GiB 的免费出站互联网数据传输。重点监控跨区域边界或超出免费层级的出站流量。
配置并发设置
当有更多实例处理请求时,Cloud Run 会分配更多 CPU 和内存,从而产生更高的费用。较高的并发设置可让较少的实例处理相同的请求量,从而降低费用。不过,应用代码必须能够高效处理并行请求。如需了解详情,请参阅调整并发性以实现自动扩缩和资源利用。
承诺使用折扣
承诺使用折扣 (CUD) 提供折扣价格,以换取您承诺在指定期限内持续使用 Cloud Run。CUD 在 Cloud Billing 账号级别应用。您可以为 Cloud Run 资源购买 Compute 灵活 CUD。计算灵活 CUD 不适用于 GPU 或网络。如需了解详情,请参阅计算灵活承诺使用折扣。
实用工具
您可以使用以下工具更好地了解费用并帮助避免费用超支。
Cloud Run 概览:结算面板
Cloud Run 概览页面会在“结算”面板中显示每个资源名称的费用。这些数字反映了每个资源在所选时间范围内的总费用。此工具可帮助您更好地了解资源费用。
预算提醒
在 Cloud Billing 中创建预算提醒,以便根据计划费用跟踪实际费用。预算提醒是一种提醒机制,会在支出超过阈值时触发通知,而不是硬性支出上限。结算数据延迟可能会影响您收到提醒的时间。
预算支出上限
当您在 Cloud Billing 控制台中或使用 Cloud Billing Budget API 以编程方式配置 Cloud Billing 预算支出上限时,这些上限会自动应用于项目中的所有 Cloud Run 资源类型。
您可以直接在 Cloud Run 控制台概览页面中监控支出上限进度。当您达到支出上限时, Google Cloud 会暂停所有 Cloud Run 工作负载,以防止以下 Cloud Run 资源产生更多费用:
- 服务:任何现有服务都将无法传送流量并返回
5xx错误。 - 作业:新任务执行无法启动,正在进行的任务无法完成。
- 工作器池:任何现有实例都会停止处理任务。
- 实例:任何正在运行的实例都会关停,新实例或重启实例无法启动,并且对实例网址的请求会返回
5xx错误。
如果您超出支出上限,您会收到提醒通知,并在 Cloud Run 控制台中看到强制执行横幅。强制执行的支出上限会在每个月开始时(即下一个结算周期的第一天)重置,从而解除对工作负载的屏蔽,并将支出金额设置为零。如果您超出了支出上限,并希望在每月重置之前恢复操作,请在 Cloud Run 控制台概览页面中手动调整或取消上限。
Cloud Billing
Cloud Billing 是一系列工具,可帮助您跟踪和了解 Google Cloud 支出。这些工具可帮助您监控使用费用、预测支出并找出节省费用的机会。
成本探索器
借助成本探索器,您可以了解资源的费用和利用率。使用成本探索器可执行以下操作:
- 按费用过滤资源,查看哪些资源费用最高。
- 了解 vCPU、GPU、网络等配置所产生的费用比例。
- 跟踪资源配置更改对月度账单的影响。
Google Cloud 价格计算器
Google Cloud 价格概览包含有助于更好地了解 Google Cloud 价格模式的信息。您还可以在此处找到详细价格表。 您可以使用价格计算器添加和配置产品,从而估算费用。
Recommender
Recommender 是一种工具,可为 Cloud 产品提供使用建议和数据分析。
Recommender 会自动查看 Cloud Run 服务在过去一个月内接收的流量,如果基于实例的结算方式费用更低,则建议将基于请求的结算方式改为基于实例的结算方式。Cloud Hub 优化
您可以在 Cloud Hub 的“优化”页面上查看 Google Cloud 服务的费用数据、利用率数据和费用优化建议。