登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-11 16:51:36 424浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《水平自动缩放的 Kubernetes Pod 不会从 Google Cloud Pub/Sub 订阅中提取消息》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我们的应用程序在 google kubernetes engine 上运行,并从 google cloud pub/sub 订阅中提取消息。我们有一个处于空闲状态的 pod,并且根据 cpu 使用情况将水平 pod 自动缩放设置为 10 个 pod。订阅大部分是空的,当批处理作业启动时,它会写入 pub/sub 主题。自动缩放运行良好。一旦 pub/sub 订阅中有未完成的消息,它会立即(30 秒内)扩展到 10 个 pod。但问题是只有少数 pod 从订阅中提取消息,而其余的 pod 则处于闲置状态,即使订阅中仍然有消息。

发布/订阅客户端设置为:

maxextension: 600
maxoutstandingmessages: 100 (also tried with 25)
synchronous: true (also tried with false)

google cloud pub/sub 订阅设置:

Pull-based
Ack Deadline is 600 seconds

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

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

您知道为什么即使 cloud pub/sub 订阅中有积压,pod 仍处于闲置状态而不提取消息吗?


解决方案


您可以尝试这样设置吗:

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

也许通过消除一些限制,情况会更好?

让我知道

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>