云 运行 缩小到零如何影响长计算作业或外部 API 请求?

How does Cloud Run scaling down to zero affect long-computation jobs or external API requests?

我是 Cloud 的新手 运行,缩小到零的想法对我很有吸引力,但我对它的一些使用场景有疑问:

  1. 如果我有一个云 运行 实例查询外部 API 端点,如果没有额外的请求进来(即我将查询超时设置为 60 分钟,并且在该 60 分钟内没有收到任何请求)?

  2. 如果云 运行 实例是 运行 计算持续时间超过 24 小时,甚至可能几天,没有收到请求,是否可以信任它来执行计算直到它完成而不是为了服务或其他目的而随机关闭或重新启动(我问这个是因为 Cloud 运行 主要用于无状态应用程序,但我有不常见的计算工作可能需要很长时间可能是在短期上下文中被认为是“有状态的”。

  3. CPU 利用率是否会影响自动缩放(例如,如果我有一个计算密集型作业未配置为在一个实例上进行分布式计算 运行,这会触发 Cloud 运行 生成额外实例?)

如果您深入研究文档,我相信您一定能找到答案。所以,这里总结一下

  1. (Interesting read).Cloud 运行 实例仅在不使用时关闭(通常为 15 分钟(可随时更改,无承诺) , 只有观察)没有请求处理)。在您的情况下,如果您处于请求处理上下文中,不用担心,您的实例不会被杀死,它正在使用中! 注意:不要在处理结束前发送 HTTP 响应。请求上下文中不考虑背景 process/jobs。上下文被认为是从收到请求到返回响应(OK 或 KO)。接受部分response/streaming。

  2. Cloud 运行 实例可能会存活超过 24 小时,但无法保证。而且,由于请求处理时间限制为 1 小时,因此您不能 运行 处理更长的时间。我建议你看看GKE autopilot or to run a container on a Compute Engine and stop the VM at the end of the processing to save resources and money (or a hack to run your container on AI PLatform custom training;即使你什么都不训练,你 运行 一个无服务器平台上的自定义容器!)。 如果可以,我建议您将工作负载设计为拆分成几个可并行的小作业

  3. 是的,it's described here。但请记住,一个实例只处理 1 个请求。如果您发送触发密集计算作业的请求,则该请求将仅在同一实例上处理(如果您的工作负载符合该要求,则该实例可以具有多个 CPU)。如果在密集处理期间有另一个请求进来,另一个 Cloud 运行 实例将被派生来处理它;只有新请求。