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

Posted

技术标签:

【中文标题】GCP PubSub:“请求被中止,因为没有可用的实例。” - 不重试失败【英文标题】:GCP PubSub: "The request was aborted because there was no available instance." - Doesn't Retry on Failure 【发布时间】:2021-10-09 04:09:37 【问题描述】: 我们有一个 pubsub 订阅设置,将请求传递给 Google Cloud Function。 云功能及其订阅均设置为“失败时重试”(均采用指数回退策略)。 Google Cloud Function 限制为 40 个并发实例。

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

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


  "textPayload": "The request was aborted because there was no available instance.",
  "insertId": "6109fbbb0007ec4aaa3855a9",
  ...

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

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

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

【问题讨论】:

不确定这是否是正确的论坛,如果有人感兴趣,请联系ticket opened in GCP issue tracker。 【参考方案1】:

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

如果您担心 Google Cloud Functions 可扩展性或一般需要进一步调查这些错误,请联系GCP support,以防您收到support plan。否则,请在issue tracker 中打开一个问题。

【讨论】:

谢谢,这个问题看起来与您链接的问题有点不同,但可能是相关的。我将把这张票记录在问题跟踪器中,看看它是怎么回事。

以上是关于GCP PubSub:“请求被中止,因为没有可用的实例。” - 不重试失败的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gsutil 向 GCP 存储桶添加 pubsub 通知

GCP - 从 PubSub 到 BigQuery 的消息

每个用户的 GCP PubSub(或 GCP 任务)同步处理

如何从 GCP 函数 GUI 调用 PubSub 函数

从现有的 GCP pubsub 订阅中消费

GCP PubSub 主题推送问题