• 解决Kafka-1194问题


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

    image

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

    image

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

      image

    image

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

    image

      到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编译环境,编译前两步即可。

       image

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

  • 相关阅读:
    Linux之文档与目录结构
    Linux介绍
    CentOS7下zip解压和unzip压缩文件
    yum 命令讲解
    Linux安装redis
    pip更新问题
    第一章-KS8初体验 安装部署
    MVC Razor视图引擎
    MVC 组件之间的关系
    Web应用程序和网站的区别
  • 原文地址:https://www.cnblogs.com/vveiliang/p/5112802.html
Copyright © 2020-2023  润新知