kafka-0.10.2.1:Producer⽣产时⽆法⾃动创建Topic
集环境:
kafka为什么那么快CenterOS 1台
Kafka:0.10.2.1版本。
今天在测试环境下,我们的Kafka集⼯作不正常,具体现象为,使⽤confulentkafka向kafka集⽣产消息失败,且并没有任何异常。
检查server配置、broker⽇志、程序异常⽇志等等都没有发现,⽹上搜索资料,并没有类似的现象出现,这就很令⼈绝望。
没办法,⾃⼰写测试程序,注册confluentkafka的producer error事件⼀点点打印⽇志。
发现⼀个有规律的现象:
发送每经过⼀段时间之后,producer的报告会打印Local:Mesasge Time out的异常,
经过简单分析,得出基本结论:该异常并不是引发消息发送不过去的诱因,⽽是结果。精⼒不能放到这个
异常上⾯。
但是好⽍也算是给我⼀个⽅向:producer在⽣产数据时,消息发送超时,并没有发送过去,超时了。
有了初步的⽅向,⾸先就要先确定
producer-client与broker的⽹络连接健康状态,(这个不⽤多说,联系运维同事,各种测验,甚⾄内⽹ip都换了过,初步排除。)topic是否⾃动创建
发送消息时消息体有没有限制。
其他等
⽹络问题初步排除后,我们去检查able的配置,默认为true,理论上来讲topic应该会⾃动创建。
且其他环境的topic都可以完美的⾃动创建。好吧,抱着试试看的态度,⼿动创建topic,然后发消息。不多说,上图
竟然发送过去了。
昨天各种测验各种排查甚⾄连神器windbg也没放过,都没到问题,抱着试试看的态度⼀试,竟然到了原因:因为Topic没有⾃动创建,导致消息发送失败。
好吧,接下来的问题就简单了,排查为啥Topic没有⾃动创建成功
继续注册⽇志事件跟进
上边那个异常有误导我很长时间,暂且略过不表,跟他关系不⼤。
主要原因在下边:Topic Partition Count is Zero,should refresh metadata。
我们知道,metadata的信息是存在zookeeper中的,有可能是broker和zookeeper的信息同步不及时或者有问题导致topic创建问题失败。
去检查server.properties(⼜来检查了):t的配置是内⽹的配置46:2181。
鉴于zookeeper和kafka都在同⼀台机器上,把zookeeper的地址改成127.0.0.1,做尝试,果不其然:
Topic可以⾃动创建,消息⽣成成功,问题解决。⾄此,这次kafka的排障就告⼀段路。
结论:⽣产发送失败时,主要从以下⼏个⽅向⼊⼿检查
1、要检查⽹络连通性
2、topic是否正常创建
3、kafka和zookeeper的连通性,重要的事情要重点标注。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论