| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 使用 confluent-kafka-go 运行一段时间后内存越来越大的问题 -> 正文阅读 |
|
[大数据]使用 confluent-kafka-go 运行一段时间后内存越来越大的问题 |
先说个我的应用场景,在入口处初始化了producer,后面一直在复用这个连接,并且是一个任务脚本,一直在跑,环境centos8 问题:服务器内存不断上涨 一开始以为是协程环境没有正常退出导致资源不能释放,后来使用pprof也没有发现游有用的信息,但是看到newProducer的时候有一段代码没看懂 ?总觉得是在这里出的问题,后来继续往下追 在看到这里的时候,我觉得差不多应该是发现问题了,然后我全局搜索这个chan是否有被消费,事实证明并没有,OK,试一下,把这个chan关掉,由于上面的if判断了一个fwDr,找到这个值,设置为false ?这里就是,传参的时候设置为false,等待验证 最终确实是我想的那样,设置为false后内存一直是正常了 当然问题是解决了,但是原理呢,其实在启动生产者的时候就初始化了一个goroutine,然后一直在监听各种事件,在没有任何动作消费的时候,内存不会变化,但是当有动作时,一旦匹配到对应的类型后,就会执行相应的动作,这里就是有消息要进行消费时,就会往这个chan里放数据 为什么会是这样呢,后来查看produce的描述,看到这里是异步的,需要用户自己从event事件中取结果,默认这个缓冲区是1000000,挺大的是吧,如果不取那么就会一直往里写,直到服务器内存撑爆,或者缓冲区的达到限定值,直接阻塞,当然它还提供了其他的生产方式,可以参考他的producer_test.go文件 吐槽一下:虽然问题很简单,但是排查的过程很难受,去了他的github上,根本找不到这个参数的说明跟配置(也可能是我没找到,有找到的同学,记得评论一下,或者私信我一下),没办法,官网不说,只能自己搞 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:02:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |