我们的应用程序正在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订阅中有积压订单的原因,为什么豆荚坐着却不拉消息?
答案 0 :(得分:0)
您可以尝试设置吗?
sub.ReceiveSettings.NumGoroutines = 10 * runtime.NumCPU()
sub.ReceiveSettings.MaxOutstandingMessages = -1
sub.ReceiveSettings.MaxOutstandingBytes = -1
也许通过取消一些限制会更好吗?
让我知道