kafka:集群启动时部分节点超时启动失败

问题

集群启动脚本运行后,发现只有1台kafka启动成功,具体如下:

kafka:集群启动时部分节点超时启动失败_第1张图片
kafka:集群启动时部分节点超时启动失败_第2张图片

排查

启动脚本里直接启动zookeeper,睡眠后20秒启动三台kafka的,最后启动efak。具体脚本如下:

kafka:集群启动时部分节点超时启动失败_第3张图片

查看报错日志如下:

kafka:集群启动时部分节点超时启动失败_第4张图片

推测:三台kafka同时启动,对cpu负荷较高,线程没有足够的时间片来连接zookeeper。因此,有两个优化点:(1)加大kafka连接zookeeper超时时间,(2)脚本里各kafka一台一台启动而不是同时启动。

解决

1、设置kafka的config/server.properties里zookeeper.connection.timeout.ms的默认6秒改成15秒,具体如下:

kafka:集群启动时部分节点超时启动失败_第5张图片

2、调整启动脚本,三台kafka同时启动,只有1台能成功连接,说明单台只需少于6秒就能连接zookeeper,这里保险起见,每个kafka设置8秒钟启动,脚本调优后如下:

kafka:集群启动时部分节点超时启动失败_第6张图片

最后多次关闭后启动kafka集群检查服务,非常正常了,具体验证如下:

kafka:集群启动时部分节点超时启动失败_第7张图片
kafka:集群启动时部分节点超时启动失败_第8张图片

最后附下关闭脚本,zookeeper没掉线的情况下,只需关闭kafka集群中的一个节点,其它节点都会关闭

kafka:集群启动时部分节点超时启动失败_第9张图片

你可能感兴趣的:(消息中间件,kafka,分布式,java)