美文网首页
【Kafka】删除Topic导致Broker重启失败

【Kafka】删除Topic导致Broker重启失败

作者: 扬_帆_起_航 | 来源:发表于2022-01-24 19:49 被阅读0次

    1. 背景

    业务同学通过公司内部的Kafka管控平台进行Topic创建完成之后,发现Topic命令不规范,再次通过Kafka管控平台进行Topic删除操作,恰好这时负责Kafka集群运维的同学对某台Broker进行了重启操作,这是很常规的运维操作理论上没有问题,但Broker启动失败了并抛出java.lang.StringIndexOutOfBoundsException: String index out of range: -1

    2. 方法

    根据经验可以采用分层排查漏斗法,一层层进行排查问题。如图:


    image.png
    • 业务应⽤层
      是否使用方式导致的问题呢,比如:流量突增、回溯读、限流、权限等
    • Kafka框架层
      KafkaProducer、KafkaConsumer、Broker相关参数配置的是否合理,比如:请求队列、网络线程数等,框架是否存在Bug,比如:后台线程异常退出、使用过程中抛出异常信息等
    • JVM运行层
      JVM的启动参数配置的是否合理,比如:初始堆、最大堆、线程栈等
    • 操作系统层
      CPU、内存、磁盘、网络等硬件是否出现问题,比如:网卡降速、磁盘坏块等,操作系统参数配置的是否合理,比如:网卡多队列绑定、文件描述符等

    3. 定位

    根据出现的问题咱们按照上边的方法进行逐一排除:
    [1].通过平台进行常规的Topic创建删除及运维重启不可能导致Broker启动失败并抛 出异常,所以排除掉业务应⽤层
    [2].常规性运维操作抛出异常信息导致Broker启动失败,根据上边的方法推测可能框架层出现的问题
    [3].JVM运行层及操作系统层更不可能了,即便配置的不合理也不可能抛出Java异常

    4. 解决

    经过我们的排查基本上确定是框架层出现问题,然后根据抛出的异常猜测大概率可能是个Bug,即便框架层配置的参数不合理也不能让Broker启动失败并出现异常,接着去- ASF JIRA看看有没有人反应过类型的问题,毕竟使用的不是前沿版本,去社区根据异常关键字进行搜索发现确识是一个Bug,原因是Topic名称中存在中划线,在进行Topic删除之后,底层文件夹名称变成了org.test-0.ed71bca2335f42a5937e01da8cc586fa-delete,在启动Broker时正好触发了这个Bug,为了更严谨一些,我们复现了上边的问题并按照社区的方法进行修复,临时解决方案可直接删除异常文件夹即可


    image.png

    5.总结

    分享问题案例不是本文的重点,重点是与众多Kafka爱好者分享从实战中总结出的方法

    相关文章

      网友评论

          本文标题:【Kafka】删除Topic导致Broker重启失败

          本文链接:https://www.haomeiwen.com/subject/rxtihrtx.html