坏盘导致Kafka故障一例

            最近工作中又踩到Kafka的一坑。

            某日收到业务侧告警说无数据,首先怀疑Flume问题,因为之前踩的Flume坑多嘛,发现某个Flume实例中有ChannelFullException,因为用的是memory channel,确认可丢数据后杀死Flume进程,起来后channel又满了。

            于是确定应该是下游Kafka问题,查了每个Kafka实例的日志,发现一个实例的日志中反复打kafka.common.NotLeaderForPartitionException,而这个异常的等级又仅是ERROR,没把Kafka自己弄死。

            之后又从主机告警中看到这台机器有慢盘问题。因为这个Kafka集群分发的数据量很大,因此组了一个20+台机器的集群,每台挂12块3T盘,以保证日志空间够用。为了恢复慢盘,决定把Kafka干掉,unmount掉盘准备再mount时,发现mount不上了,看来是硬盘故障。但奇怪的是硬盘故障没有导致Kafka实例挂掉,也没有避免写入该盘的机制,只是挂起在那里。

            其实这个问题只要看一下Kafka源码就不难理解了。

            Kafka源码分析(5)中,LogManager的构造方法中有以下调用:

createAndValidateLogDirs(logDirs)

            这个方法的具体代码如下:

  /**
   * Create and check va
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值