在使用始终分配 CPU 时,云 运行 实例是否有最短时间不缩小?

Is there a minimal time after which a cloud run instance isn't scaled down when using always allocated CPU?

我目前实现了一个典型的云 运行 服务,并希望使用一些异步功能来扩展它,这些异步功能是为响应传入的 HTTP 请求而执行的。这些异步任务不会超过 5-10 分钟。

我现在想知道启用“始终分配 cpu”选项的云 运行 服务是否可以保证 15 分钟 window 的分配 cpu 时间后最后一个请求的响应已经发送。我了解在超过 15 分钟内未收到请求的实例将被终止。但反过来也是这样吗?

我在云端运行文档上找到了下面这段话:

Even if CPU is always allocated, Cloud Run autoscaling is still in effect, and may terminate container instances if they aren't needed to handle incoming traffic. An instance will never stay idle for more than 15 minutes after processing a request (unless it is kept active using min instances).

(https://cloud.google.com/blog/products/serverless/cloud-run-gets-always-on-cpu-allocation)

这是唯一一次,虽然本文提到了15分钟的时间间隔,而且文章中的甘特图没有显示任何固定时间保证cpu-分配时间在最后一次发送之后响应。

请求后是否有保证的 cpu 时间间隔?

根据 documentation that you provided (same with CPU allocation (services) 文档,这是不可能的。

Note that even if CPU is always allocated, Cloud Run autoscaling is still in effect, and may terminate container instances if they aren't needed to handle incoming traffic. An instance will never stay idle for more than 15 minutes after processing a request unless it is kept active using minimum instances.

保持空闲实例永久可用的一种方法是将您的min-instance设置为大于1的值,但是即使服务不可用,这也会产生费用没有主动处理任何请求。

您可以查看此文档about container instance autoscaling 了解更多信息。

我对 container contract 的看法是,最好将自己限制在 request/response 流程中,但大部分时间都在练习这一点,因为它有助于更​​轻松地跟踪请求。

虽然没有明确指出像您预期的那样使用分配的空闲时间进行越界处理是不允许的,但使用 Cloud Tasks or the new Cloud Run Job 工作负载可能是明智的,如果这是一个选项。