问题
集群启动脚本运行后,发现只有1台kafka启动成功,具体如下:
排查
启动脚本里直接启动zookeeper,睡眠后20秒启动三台kafka的,最后启动efak。具体脚本如下:
查看报错日志如下:
推测:三台kafka同时启动,对cpu负荷较高,线程没有足够的时间片来连接zookeeper。因此,有两个优化点:(1)加大kafka连接zookeeper超时时间,(2)脚本里各kafka一台一台启动而不是同时启动。
解决
1、设置kafka的config/server.properties里zookeeper.connection.timeout.ms的默认6秒改成15秒,具体如下:
2、调整启动脚本,三台kafka同时启动,只有1台能成功连接,说明单台只需少于6秒就能连接zookeeper,这里保险起见,每个kafka设置8秒钟启动,脚本调优后如下:
最后多次关闭后启动kafka集群检查服务,非常正常了,具体验证如下:
最后附下关闭脚本,zookeeper没掉线的情况下,只需关闭kafka集群中的一个节点,其它节点都会关闭