Kafka生产发送数据失败

举报
Summer_ 发表于 2022/04/28 14:38:59 2022/04/28
【摘要】 我们使用kafka时,有时候会遇到发送数据失败的情况,其原因及解决方案如下:1.     Kafka topic leader为-1Kafka客户端执行如下命令查看topic的leader信息:kafka-topics.sh --describe --zookeeper zk业务IP:24002/kafka如果leader为-1,需查看Replicas中的副本节点是否正常,查看命令如下:ka...

我们使用kafka时,有时候会遇到发送数据失败的情况,其原因及解决方案如下:

1.     Kafka topic leader为-1

Kafka客户端执行如下命令查看topic的leader信息:

kafka-topics.sh --describe --zookeeper zk业务IP:24002/kafka

如果leader为-1,需查看Replicas中的副本节点是否正常,查看命令如下:

kafka-broker-info.sh --zookeeper zk业务IP:24002/kafka

命令中可以查询到brokerid,说明节点kafka服务正常

如果leader为-1的分区对应的Replicas中节点都不正常,需要先恢复异常节点kafka服务。如果都正常但ISR列表中无节点信息,或者ISR列表中的节点不正常,需要查看Kafka服务端的unclean.leader.election.enable参数是否为true或者topic端是否配置此参数为true。如果都不为true,需要对此topic修改配置为true。

Kafka服务端的unclean.leader.election.enable参数配置查看方式如下:

07.png                                             


Kafka topic端unclean.leader.election.enable参数配置查看方式如下:

kafka-topics.sh --describe --zookeeper zk业务IP:24002/kafka --topic topicName

如果Config中无unclean.leader.election.enable信息,则与服务端配置一致。

如果有,则此配置优先级高于服务端配置。

修改topic端此配置的方式如下:

kafka-topics.sh --alter --topic topicName --zookeeper zk业务IP:24002/kafka --config unclean.leader.election.enable=true

2.     DNS配置导致

执行 vi /etc/resolv.conf,如果有“nameserver X.X.X.X”,把此内容注释掉

3.     网络异常

生产端节点ping服务端IP,ping -s 15000 IP,如果延迟高于5ms,说明网络延迟过高,也可通过长ping来判断是否有网络丢包。

4.     CPU或者IO过高也可能导致连接失败

iostat -d -x 1查看CPU参数idle和IO参数util,idle值越高,CPU越空闲,util值越高,IO使用率越高。如果idle值小于20%,top -Hp kafkaPid查看CPU使用率高的线程,打jstack日志分析具体的原因;如果util值大于80%,查看磁盘对应的读写速率、await和svctm的大小判断对IO影响大的原因,如果读写速率比较大,排查kafka读写请求和延时,如果awati远大于svctm,IO队列太长,应用响应时间很慢。

5.     磁盘坏道或者其他原因也可能导致连接失败

如果server.log日志中有大量“java.io.IOException: Connection to IP:21007 (id: 2 rack: null) failed”日志,查看IP节点操作系统日志中是否有“Sense Key : Medium Error”信息,如果有,说明出现磁盘坏道,需修复或更换磁盘。另外,还需要打此节点的jstack信息,排查是否有阻塞或者死锁。如果是C80版本,且jstack信息中有如下信息,需打死锁补丁:

08.png


6.     如果报“TimeoutException”或偶尔发送失败,可先调大request.timeout.ms,并查看服务端num.io.threads和num.network.threads是否可以优化(这两个参数一般调整为节点磁盘个数的倍数)。根据发送的数据量的大小也可适当调整batch.size、buffer.memory、linger.ms的大小。如果发送的数据量很大且可容忍一定时延,也可以考虑开启压缩,compression.type指定压缩方式,可配置为“gzip”、“snappy”或“lz4”。

7.     ssh卡住

ssh -v -p 端口号 异常节点ip

09.png

如果如上图所示卡住,解决方式是将GSSAPIAuthentication修改为no

8.     如果是集群外客户端生产发送失败,还可以通过集群内客户端测试下生产是否成功,进一步减小排查方向。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。