我有一个关于 Cloud Run 的问题:例如,如果我用 4GB 的 RAM 和 2 个 vCPU 设置我的服务,与标准的 256MB 和 1 个 vCPU 不同,即使我从不消耗所有这些,我是否需要支付更多费用?我提供的资源?再举个例子,假设我将 --memory 设置为 6GB 并且没有请求消耗超过 2GB,考虑到使用高峰是 2GB,我会支付 6GB 的 RAM 还是 2GB?
我之所以这么问是因为我想确保我的应用程序永远不会因内存不足而消失,因为我认为默认的 256MB Cloud Run 对我来说还不够,但我想确定 Google 如何收费和秤。
答案 0 :(得分:1)
这是docs的引述:
<块引用>您只需为计费时间内分配的 CPU 和内存付费,四舍五入到最接近的 100 毫秒。
这意味着,如果您在 Cloud Run 服务上分配了 4GB 的内存,无论它是否未充分使用,您仍需支付 4GB 的费用。
就您的情况而言,由于您想确保请求不会耗尽内存,因此您可以为每个请求分配一个实例资源。有了这个,您只需找出可以运行您的请求的最便宜的内存设置,并将 concurrency 设置限制为一个。
或者,利用并发(并分配更高的内存),因为 Cloud Run 允许并发请求,因此您可以控制在启动新实例之前可以共享资源的请求数量,这可能是一件好事,因为它有助于降低速度成本并最小化启动多个实例(参见 cold starts)。如果您确信一定数量的请求可以共享一个实例而不会耗尽内存,那么这可能是一个更好的选择。
<块引用>当更多的容器实例处理请求时,会使用更多的 CPU 和内存,从而导致更高的成本。当需要启动新的容器实例时,处理请求可能需要更多时间,从而降低您的服务性能。
请注意,每种方法都有不同的优点和缺点。在做出决定之前,您应该注意每一个。使用 GCP Calculator 试验成本会有所帮助(计算器在计算中包含 Free Tier)。