常見陷阱和限制

使用 Cloud Tasks 時,您可能會碰到下列問題和限制:

執行順序

除了排定在之後執行的工作以外,我們完全無法預知工作佇列的執行順序。這些工作不保證會依照任何特定順序執行,但會盡可能的達到這一點。尤其是舊工作,除非佇列已完全清空,否則不保證會執行。新工作時常出現比舊工作先執行的情況,但這樣的執行模式可能會變更而不另行通知。

重複執行

Cloud Tasks 嚴格實行「只執行一次」的機制。不過,如果必須在保證執行與重複執行之間進行取捨,採取保證執行的做法會導致服務發生錯誤,因此會發生一次以上的重複執行情形。開發人員應採取相關步驟以確保重複執行並非災難性事件。在實際工作環境中,超過 99.999% 的工作只會執行一次。

資源限制 (Cloud Tasks 佇列)

立即處理佇列中之所以會有待處理作業,最常見的原因是目標執行個體的資源用盡。如果使用者嘗試在每秒只能處理 10 個要求的前端執行個體上每秒執行 100 個工作,系統就會建立待處理作業。這通常會透過兩種方式呈現,而增加處理要求的執行個體數通常可以解決這些問題。

輪詢錯誤與強制執行率

App Engine 伺服器超載可能會透過 HTTP 回應碼 503 的形式傳回輪詢錯誤。為回應這些錯誤,Cloud Tasks 會放慢執行速度,直到錯誤停止。您可以在 GCP 主控台中查看「enforced rate」(強制執行率) 欄位,觀察這個情形。

前往 Cloud Tasks 頁面

延遲時間遽增以及並行數量上限

App Engine 伺服器超載也可能會導致延遲時間大幅增加。在此情況下,要求維持開啟狀態的時間會更久。由於佇列在執行時會受限於並行工作數上限,因此這可能會導致佇列無法依預期速度執行。如果受影響佇列所設定的 max_concurrent_tasks 值過低,您可以提高該值,導入自訂頻率限制。不過提高 max_concurrent_tasks 值無法解除任何根本的資源壓力。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Tasks 說明文件