集群环境:

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是否自动创建
  • 发送消息时消息体有没有限制。
  • 其他等

网络问题初步排除后,我们去检查auto.create.topics.enable的配置,默认为true,理论上来讲topic应该会自动创建。

且其他环境的topic都可以完美的自动创建。好吧,抱着试试看的态度,手动创建topic,然后发消息。不多说,上图

竟然发送过去了。

昨天各种测验各种排查甚至连神器windbg也没放过,都没找到问题,抱着试试看的态度一试,竟然找到了原因:因为Topic没有自动创建,导致消息发送失败。

好吧,接下来的问题就简单了,排查为啥Topic没有自动创建成功

继续注册日志事件跟进

上边那个异常有误导我很长时间,暂且略过不表,跟他关系不大。

主要原因在下边:Topic Partition Count is Zero,should refresh metadata。

我们知道,metadata的信息是存在zookeeper中的,有可能是broker和zookeeper的信息同步不及时或者有问题导致topic创建问题失败。

去检查server.properties(又来检查了):zookeeper.connect的配置是内网的配置10.x.x.46:2181。

鉴于zookeeper和kafka都在同一台机器上,把zookeeper的地址改成127.0.0.1,做尝试,果不其然:

Topic可以自动创建,消息生成成功,问题解决。至此,这次kafka的排障就告一段路。

结论:生产发送失败时,主要从以下几个方向入手检查

1、要检查网络连通性

2、topic是否正常创建

3、kafka和zookeeper的连通性,重要的事情要重点标注。

kafka-0.10.2.1:Producer生产时无法自动创建Topic的更多相关文章

  1. Kafka 0.10问题点滴

    15.如何消费内部topic: __consumer_offsets 主要是要让它来格式化:GroupMetadataManager.OffsetsMessageFormatter 最后用看了它的源码 ...

  2. Kafka 0.10.1版本源码 Idea编译

    Kafka 0.10.1版本源码 Idea编译 1.环境准备 Jdk 1.8 Scala 2.11.12:下载scala-2.11.12.msi并配置环境变量 Gradle 5.6.4: 下载Grad ...

  3. kafka 0.10.2 消息生产者(producer)

    package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.*; import org.apache.kafk ...

  4. Kafka 0.10.0

    2.1 Producer API We encourage all new development to use the new Java producer. This client is produ ...

  5. Kafka 0.10 KafkaConsumer流程简述

    ConsumerConfig.scala 储存Consumer的配置 按照我的理解,0.10的Kafka没有专门的SimpleConsumer,仍然是沿用0.8版本的. 1.从poll开始 消费的规则 ...

  6. Kafka 0.10.1.1 特点

    1.Consumer优化:心跳线程可作为后台线程,提交offset,剥离出poll函数 问题:0.10新设计的consumer是单线程的,提交offset是在poll中.本次的poll调用,提交上次p ...

  7. kafka 0.10.2 消息生产者

    package cn.xiaojf.kafka.producer; import org.apache.kafka.clients.producer.KafkaProducer; import org ...

  8. kafka 0.10.2 cetos6.5 集群部署

    安装 zookeeper http://www.cnblogs.com/xiaojf/p/6572351.html安装 scala http://www.cnblogs.com/xiaojf/p/65 ...

  9. kafka 0.8.1 新producer 源码简单分析

    1 背景 最近由于项目需要,需要使用kafka的producer.但是对于c++,kafka官方并没有很好的支持. 在kafka官网上可以找到0.8.x的客户端.可以使用的客户端有C版本客户端,此客户 ...

随机推荐

  1. JavaBean的学习

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  2. Springboot国际化信息(i18n)解析

    国际化信息理解 国际化信息也称为本地化信息 . Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 .举个例子吧 ...

  3. PythonI/O进阶学习笔记_4.自定义序列类(序列基类继承关系/可切片对象/推导式)

    前言: 本文代码基于python3 Content: 1.python中的序列类分类 2. python序列中abc基类继承关系 3. 由list的extend等方法来看序列类的一些特定方法 4. l ...

  4. Python网络爬虫实战(三)照片定位与B站弹幕

    之前两篇已经说完了如何爬取网页以及如何解析其中的数据,那么今天我们就可以开始第一次实战了. 这篇实战包含两个内容. * 利用爬虫调用Api来解析照片的拍摄位置 * 利用爬虫爬取Bilibili视频中的 ...

  5. Unity3D_01_各种寻找GameObject方法

    1.GameObject.Find(): 寻找Hierarchy面板中的activie 不为false的游戏对象: 路径如官方事例写法: public class ExampleClass : Mon ...

  6. STL中区间最值max_element和min_element的用法

    前面的博客已经讲解了nth_element寻找区间第K大的用法,现在我们来说说这两个找区间最值的用法.两个函数都包含在algorithm库中. 一.函数原型 max_element template& ...

  7. [kuangbin带你飞]专题一 简单搜索 题解报告

    又重头开始刷kuangbin,有些题用了和以前不一样的思路解决.全部题解如下 点击每道题的标题即可跳转至VJ题目页面. A-棋盘问题 棋子不能摆在相同行和相同列,所以我们可以依此枚举每一行,然后标记每 ...

  8. Linux线程唤醒与等待

    生产者消费者模式在程序设计中出现频率非常高,经常会有线程间通过消息队列或其他共享变量进行交互的场景.而这时就会出现一个问题,消费者如何知道生产者已经生产了数据呢?有的程序会采取消费者循环判断消息队列大 ...

  9. JavaScript之对象基础

    现实世界是由无数的事物或对象组成,事物都有各独特的属性和一些动作行为,一般我们可以通过事物的某些特征或行为动作描述它.JavaScript中也是如此,JavaScript对象是多个键值对的集合,键我们 ...

  10. (转)在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境

    阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...