簡體   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