繁体   English   中英

Google Cloud Run 和 golang goroutines

[英]Google Cloud Run and golang goroutines

我正在考虑使用 Google Cloud Run 来执行一些我需要执行的类似 cron 的操作。 它们将被 HTTP 调用触发。 调用将返回(可能带有 202)并继续通过 golang goroutine 在后台运行。

但是,我担心 Google Cloud Run 容器在不处理 HTTP 请求时会被销毁。 我可能会中途处理并被收割。

有没有办法告诉 GCR 在我完成之前让容器保持活动状态?

Cloud Run在不处理任何请求时会将您的CPU缩减至几乎为零,因为您只在处理请求时才付费。 在此处记录 )。

因此, 在后台启动goroutine的应用程序不适合Cloud Run 如果这样做,您的goroutines很可能会饿死CPU时间分配,并且您的程序可能开始表现得很奇怪(因为它将在非常慢的CPU上运行,如果有的话)。

闲置的Cloud Run应用程序获得的微不足道的数量可能仅对垃圾收集有用,而运行时将为您完成这些工作。

如果要在请求的上下文中等待goroutine完成,则应使用chansync.WaitGroup#Done()类的方法来阻止请求返回。

Cloud Run 相当新的 Always On CPU 功能解决了这个问题。 这是详细信息的链接: https://cloud.google.com/blog/products/serverless/cloud-run-gets-always-on-cpu-allocation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM