首页 > 解决方案 > 关于按硬件资源收取的 Cloud Run 费用:我是否需要为未充分使用的内存付费?

问题描述

我有一个关于 Cloud Run 的问题:例如,如果我使用 4GB 的 RAM 和 2 个 vCPU 来设置我的服务,这与标准的 256MB 和 1 个 vCPU 不同,即使我从不消耗我拥有的所有资源,我是否需要支付更多的费用提供?例如,假设我将 --memory 设置为 6GB,并且没有任何请求消耗超过 2GB,考虑到使用高峰是 2GB,我会支付 6GB 的 RAM 还是 2GB?

我问是因为我想确保我的应用程序永远不会耗尽内存,因为我认为 Cloud Run 的默认 256MB 对我来说还不够,但我想确定 Google 如何收费和扩展。

标签: google-cloud-platformgoogle-cloud-run

解决方案


这是来自文档的引用:

您只需为计费时间内分配的 CPU 和内存付费,四舍五入到最接近的 100 毫秒。

这意味着,如果您在 Cloud Run 服务上分配了 4GB 内存,那么无论是否未充分使用,您仍然需要支付 4GB 的费用。

在您的情况下,由于您想确保请求不会耗尽内存,因此您可以将实例资源专用于每个请求。有了这个,您只需找出可以运行您的请求的最便宜的内存设置并将并发设置限制为一个。

或者,利用并发性(并分配更高的内存),因为 Cloud Run 允许并发请求,因此您可以在启动新实例之前控制有多少请求可以共享资源,这可能是一件好事,因为它有助于降低成本并最大限度地减少启动许多实例(请参阅冷启动)。如果您确信一定数量的请求可以共享一个实例而不会耗尽内存,这可能是一个更好的选择。

当更多的容器实例在处理请求时,会使用更多的 CPU 和内存,从而导致更高的成本。当需要启动新的容器实例时,处理请求可能需要更多时间,从而降低服务的性能。

请注意,每种方法都有不同的优点和缺点。在做出决定之前,您应该注意每一个。使用GCP 计算器试验成本会有所帮助(计算器在计算中包含免费套餐)。


推荐阅读