IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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上,根本找不到这个参数的说明跟配置(也可能是我没找到,有找到的同学,记得评论一下,或者私信我一下),没办法,官网不说,只能自己搞

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:11:03  更:2021-11-25 08:12:30 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码