首页 > 其他 > 详细

解决Kafka-1194问题

时间:2016-01-08 13:13:52      阅读:587      评论:0      收藏:0      [点我收藏+]

    生产环境中使用Kafka作为日志处理的中间件,系统结构是这样的。自12月上线一个多月来,系统运行稳定。

技术分享

   用过kafka的都知道,Kafka产生的消息全部存储到硬盘文件中,并且在消息被消费后不会被立即删除。kafka会根据配置的删除策略,定时清理。

技术分享

  生产环境中,Kafka是部署在Windows2012下的,经过1个月的运行,发现kafka产生的日志文件很大,进一步分析Kafka的日志文件,发现存在很多过期的日志文件。

  技术分享

技术分享

  进一步查看系统产生的日志,发现系统存在异常:kafka.common.KafkaStorageException: Failed to change the log file suffix from  to .deleted for log segment 49121。

技术分享

  到github搜索了一下,果然发现了这个bug,只有windows下才有这个问题,郁闷。而且这个bug计划在0.10.0版本中解决,现在是0.9.0才刚刚发布,0.10.0还不知道啥时候发布呢。

https://github.com/apache/kafka/pull/154 

   好在已经有大牛把解决问题的源代码贴出来了,只能自己动手修改编译了。首先从https://git-wip-us.apache.org/repos/asf?p=kafka.git;a=summary 下载最新的源代码包,注意不要下载老的,否则编译不通过。下载到最新代码后,参考: https://github.com/apache/kafka/pull/154 把修改的代码合并进去,然后按照github的知道搭建gradle编译环境,编译前两步即可。

   技术分享

  编译完成后,在源代码Core目录会新生成Build文件夹,此处存放了所有编译生成的交付物。把libs和dependant-libs-XXX目录合并后,覆盖到kafka的运行环境/libs目录即可。

解决Kafka-1194问题

原文:http://www.cnblogs.com/vveiliang/p/5112802.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!