GCP PubSub:“请求已中止,因为没有可用的实例。” - 失败时不重试

tim*_*mhj 6 google-cloud-platform google-cloud-pubsub google-cloud-functions

  • 我们有一个 pubsub 订阅设置,将请求传递给 Google Cloud Function。
  • 云函数及其订阅都设置为“失败重试”(均采用指数退避策略 fwiw)。
  • Google Cloud Function 限制为 40 个并发实例。

当订阅队列大于可用实例时,预期行为是传递将失败并稍后重试。

似乎正在发生的事情是日志中充满了这样的消息:

{
  "textPayload": "The request was aborted because there was no available instance.",
  "insertId": "6109fbbb0007ec4aaa3855a9",
  ...
}
Run Code Online (Sandbox Code Playgroud)

并且订阅消息只是被丢弃而不会重试。

这是预期的行为吗?对我来说这似乎很疯狂,但如果是这样,您应该采用什么架构来捕获这些丢失的消息?

编辑:这些问题于 2021 年 7 月 5 日开始出现在我们的日志中,并且在该日期之前无法在日志中找到。在此之前,pubsub/gcf 组合曾经按预期工作。

Kab*_*raj 3

您遇到的错误是一个已知问题,可以通过此问题跟踪器跟踪更新。您还可以通过参考此链接STAR来接收自动更新并给予关注。跟踪器还讨论了缓解请求中止的解决方法。由于您已经实现了指数退避重试,请查看此处提供的其他解决方案。

如果您关心的是 Google Cloud Functions 可扩展性,或者通常需要进一步调查这些错误,请联系GCP 支持(如果您有支持计划)否则,请在问题跟踪器中打开问题。