为什么 Google Cloud Tasks 这么慢?

问题描述 投票:0回答:4

我使用 Google Cloud Tasks 和 AppEngine 来处理任务,但任务在队列中等待大约 2-3 分钟,然后才会发送到我的 App Engine 端点。

任务没有设置“延迟”,我希望它们能立即发送。

那么问题是:云任务慢吗?

正如您在下面的屏幕截图中看到的,Cloud Tasks 给出的 ETA 约为 3 分钟:

google-app-engine google-cloud-platform google-cloud-tasks
4个回答
2
投票

Google 的官方说法是,这是您可以从他们的任务队列中得到的最好结果。

根据我的经验,配置任务的方式似乎会影响任务的执行速度。

看来:

  • 如果您不更改任务队列的默认行为(例如最大并发数等)并且不指定任务的执行时间(例如eta),那么您的任务将在提交后很快执行.
  • 如果你搞乱了这两件事中的任何一个,那么谷歌将花费更长的时间来执行你的任务。我的猜测是,这是控制任务速率和执行的额外开销。

1
投票

在此补充一下,从 2023 年 2 月开始,我可以对任务进行排队,然后使用 Python 3.7 库非常快速地使用它们。

排队 1000 个任务大约需要 13.5 秒。 使用 Cloud Run 部署的 python/flask 应用处理这 1000 个任务大约需要 1 分钟。 (没有做其他处理,只是接收并回复200)。

所以,超级快!

顺便说一句,在我的测试中,pubsub 速度要慢得多...每条消息大约需要 40 毫秒才能对消息进行排队。


0
投票

我从你的屏幕截图中看到,你有一个任务的 ETA 为 2 分 49 秒,这是你的任务运行之前的时间。您有high存储桶大小和并发数,因此我认为您的问题更多地与您在对任务进行排队时使用的参数有关,尤其是

scheduled_time
属性。检查您的代码,看看您是否为任务添加了延迟,并确保将其调低。


0
投票

将 Cloud Tasks 与 GAE 结合使用时,还需要提及 GAE 配置。

我也遇到过同样的问题,甚至在 Google Bug Tracker 中发现了为此创建的错误link

就我而言,问题在于 GAE 的配置,确切地说是自动缩放功能。

当云任务队列中有大量任务时,GAE 决定为此创建另一个实例,这就是问题所在。由于我的 GAE 配置,第二个实例需要花费几分钟才能运行,这就是为什么某些任务在队列中挂起

GAE 配置非常具体于 GAE 的用途,但就我而言,我调高了资源(cpu 和内存_GB)并决定对一个实例进行手动调用。

© www.soinside.com 2019 - 2024. All rights reserved.