问题名称
Kafka大量连接断开重连
关键词
Kafka,大量连接断开重连
问题场景
系统环境:Red Hat Enterprise Linux (RHEL) Server 6.5
日志分析系统安装完成后,正常运行。运行一段时间后,突然无法接受到日志。
检查日志分析系统数据流,发现Kafka出现问题,Zookeepeer自动关闭。重新启动zookeeper后,数据无法从Kafka至Logstash。
原因分析
1. 查看Logstash端日志,发现错误日志如下:
[2018-04-12 16:25:11,412] INFO Closed socket connection for client /XXX.XXX.XXX.XXX:47606 (no session established for client)
[2018-04-12 16:25:14,410] INFO Accepted socket connection from /XXX.XXX.XXX.XXX:47610
[2018-04-12 10:28:47,989] WARN Unable to read additional data from client sessionid 0x0, likely client has closed socket (org.apache.zookeeper.server.NIOServerCnxn)
2. 推测配置的超时时间过短,Zookeeper没有读完Consumer的数据,连接就被Consumer断开了,设置zookeeper.session.timeout.ms为2000,重启Zookeeper,发现不能解决问题。
3. 在Kafka端,运行“netstat -antp | grep 2181”命令,发现很多TIME_WAIT情况。到Logstash端,运行“netstat -ant”命令,发现大量TIME_WAIT的情况,说明在Zookeeper关闭过程中,Logstash不停的发送请求,重启Zookeeper后,虽然建立了连接,但是出现了大量连接断开重连现象。
解决方案
- 在Logstash端,停止所有Logstash。之后逐一开启Logstash,并利用“netstat -ant”命令逐一查看连接情况。
- 启动所有Logstash,发现连接全部建立,未再次发生大量连接断开重连现象,问题解决。