水平自动缩放的Kubernetes Pod无法从Google Cloud Pub / Sub订阅中提取消息

时间:2019-10-04 10:43:49

标签: go google-cloud-platform google-kubernetes-engine google-cloud-pubsub horizontal-scaling

我们的应用程序正在Google Kubernetes Engine上运行,并从Google Cloud Pub/Sub订阅中提取消息。我们有一个Pod在空闲状态下运行,根据CPU的使用情况,水平Pod的自动缩放比例最多可设置10个Pod。订阅大部分为空,并且在启动批处理作业时,它将写入Pub / Sub主题。自动缩放功能运行良好。一旦发布/订阅中有未完成的消息,它将立即(在30秒内)扩展到10个窗格。但是问题在于,只有少数几个Pod从订阅中提取消息,而即使订阅中仍然有消息,其余的也只是坐在那里。

Pub / Sub客户端设置为:

MaxExtension: 600
MaxOutstandingMessages: 100 (also tried with 25)
Synchronous: true (also tried with false)

Google Cloud发布/订阅设置:

Pull-based
Ack Deadline is 600 seconds

批处理作业启动后,它将2万条消息写入Pub / Sub主题。该应用程序平均每秒可处理2条消息。

该应用程序是用golang编写的,我们使用的是cloud.google.com/go v0.44.1软件包版本。

您知道即使Cloud Pub / Sub订阅中有积压订单的原因,为什么豆荚坐着却不拉消息?

1 个答案:

答案 0 :(得分:0)

您可以尝试设置吗?

    sub.ReceiveSettings.NumGoroutines = 10 * runtime.NumCPU()
    sub.ReceiveSettings.MaxOutstandingMessages = -1
    sub.ReceiveSettings.MaxOutstandingBytes = -1

也许通过取消一些限制会更好吗?

让我知道