GCP Pubsub 未传递消息的数量不会改变

Posted

技术标签:

【中文标题】GCP Pubsub 未传递消息的数量不会改变【英文标题】:GCP Pubsub num of undelivered messages wont change 【发布时间】:2021-08-24 23:59:27 【问题描述】:

我正在使用 pubsub 来触发我定义为最多具有 10 个实例的云功能。

当大约 300 条或更多消息到达主题并开始触发该功能时,突然未确认的消息数量停止增长,它只是没有改变,尽管我知道我触发的云功能是自动触发的确认这些消息...

我想知道我在这里错过了什么......

添加以下图表以显示我在说什么:

所以这里有几件事需要注意:

图表以 1 分钟为间隔 图表的刻度在右侧 左边的工具箱很容易看出什么颜色对应什么线条 ack_message_count(蓝色)是我的云函数每分钟执行的确认数 send_message_operation_count(绿色)是发布到正在触发云功能的主题的消息数 请注意下午 1:01 左右的峰值,这是发送到主题的批量,大约有 1k 条新消息 除了大量消息之外,不断有新消息进入主题,但远远少于执行的确认数 push_request_count(橙色)是 pubsub 尝试触发云功能的次数(成功或导致 429 表示已达到最大运行实例数) num_undelivered_messages(粉红色)是订阅队列中等待的未确认消息的数量

首先,我可能只是没有使用我的云功能执行足够的确认,但事实并非如此,因为在 1k 消息的峰值之后,确认比新消息多得多。

我以为我会看到订阅队列中未确认消息的数量稳步下降。

所以基本上我不明白的是为什么 num_undelivered_messages 没有随着 ack 数量的继续下降(1:01 - 1:10),然后突然下降(1:10 - 1 :15) 真的很快吗?

【问题讨论】:

【参考方案1】:

根据图表,您对消息的确认跟不上正在发布的消息量。一个例子是在 1:05-1:10,仍然有消息在发布(绿线),但确认率(蓝线)没有增加,因此未确认的消息增加了(粉线)。

如果您的cloud function memory 尚未达到最大 8GB,我建议增加它。

【讨论】:

以上是关于GCP Pubsub 未传递消息的数量不会改变的主要内容,如果未能解决你的问题,请参考以下文章

GCP Pubsub 主题持续时间中存在的消息数

GCP 云功能未正确接收/确认 PubSub 消息

GCP Pubsub 中的消息丢失和重复

在 Spring Cloud GCP pubsub 中创建特定于消息通道的线程

如何将消息从 GCP 推送订阅传递到本地 PC?

GCP - 从 PubSub 到 BigQuery 的消息