繁体   English   中英

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

[英]Horizontally Autoscaled Kubernetes pods not pulling messages from Google Cloud Pub/Sub subscription

我们的应用程序在Google Kubernetes Engine上运行,并从Google Cloud Pub/Sub订阅中提取消息。 我们有一个 pod 在空闲 state 中运行,水平 pod 自动缩放设置为 10 个 pod,具体取决于 CPU 使用情况。 订阅大部分是空的,当批处理作业启动时,它会写入 Pub/Sub 主题。 自动缩放运行良好。 一旦 Pub/Sub 订阅中有未完成的消息,它会立即(在 30 秒内)扩展到 10 个 Pod。 但问题是只有少数 pod 正在从订阅中提取消息,即使订阅中仍有消息,它们中的 rest 也只是坐着。

Pub/Sub 客户端设置为:

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

谷歌云发布/订阅设置:

Pull-based
Ack Deadline is 600 seconds

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

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

您知道为什么即使 Cloud Pub/Sub 订阅中有积压,这些 pod 仍然坐着而不拉消息吗?

你可以尝试设置这个:

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

也许通过取消一些限制,它可能会更好?

让我知道

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM