登录
首页 >  Golang >  Go问答

内存泄漏问题在Confluence中Kafka Go客户端的存在

来源:stackoverflow

时间:2024-03-06 08:42:26 292浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《内存泄漏问题在Confluence中Kafka Go客户端的存在》,涉及到,有需要的可以收藏一下

问题内容

我的服务使用来自一个 kafka 主题的消息。当消费者空闲并阻塞等待消息时,我看到 POD 内存持续线性增加。 GO pprof 证明 go 内存消耗恒定在 40 MB 左右,同时 POD 指标显示消耗了超过 100 MB。

这让我得出结论,C 库 librdkafka 消耗了内存,如此处所述 https://zendesk.engineering/hunting-down-a-c-memory-leak-in-a-go-program-2d08b24b617d p>

上面链接中librdkafka内存消耗的解决方案是消耗librdkafka产生的OffsetCommitResponse事件。以下是链接中的引用:

事实证明,librdkafka 每次都会生成一个事件 收到来自 Kafka 代理的 OffsetCommitResponse(其中包含 我们的自动提交间隔设置为 5 秒,这很常见),并且 将其放入队列中供我们的应用程序处理。然而,我们的应用程序 实际上并没有处理该队列中的事件,因此该队列的大小 队列无限增长

有人知道如何在 go 中使用这些事件吗?不幸的是上面的链接没有提到解决方案


正确答案


我通过计算服务中消耗的消息数量解决了这个问题。当消费的消息数量达到配置的值时,例如在我的例子中是 100,000,然后我只需关闭并重新创建 kafka 消费者和生产者。

这个解决方案既不优雅,也没有解决原始问题,但是它稳定了我的生产。现在我有了平坦的内存消耗曲线。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《内存泄漏问题在Confluence中Kafka Go客户端的存在》文章吧,也可关注golang学习网公众号了解相关技术文章。

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