zookeeper大量连接断开原因排查Unable to read additional data from client sessionid

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

问题现象:

最后发现线上的zookeeper的日志zookeeper.out

2016-08-18 16:25:11,412 [myid:3] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1008] - Closed socket connection for client /192.168.9.40:47606 (no session established for client)
2016-08-18 16:25:14,410 [myid:3] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@192] - Accepted socket connection from /192.168.9.40:47610
2016-08-18 16:25:14,410 [myid:3] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@357] - caught end of stream exception
EndOfStreamException: Unable to read additional data from client sessionid 0x0, likely client has closed socket
        at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:230)
        at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:203)
        at java.lang.Thread.run(Thread.java:745)
2016-08-18 16:25:14,410 [myid:3] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1008] - Closed socket connection for client /192.168.9.40:47610 (no session established for client)

再仔细查看下日志里的内容,发现有很多连接建立好,马上又断开:

从日志输出的时间来看,秒连秒断。


在用netstat查看网络连接状态

到client的服务器上查看连接的状态:

netstat -antp | grep 2181  

发现有很多TIME_WAIT状态的连接:

tcp        0      0 192.168.9.45:44269         192.168.9.40:2181         TIME_WAIT   -                     
tcp        0      0 192.168.9.45:43646         192.168.9.40:2181         TIME_WAIT   -                     
tcp        0      0 192.168.9.45:44184         192.168.9.40:2181         TIME_WAIT   -                     
tcp        0      0 192.168.9.45:44026         192.168.9.40:2181         TIME_WAIT   -                     
tcp        0      0 192.168.9.45:43766         192.168.9.40:2181         TIME_WAIT   -    


但是TIME_WAIT状态的连接是看不到进程号的。搜索研究了下netstat的参数,发现没有办法输出TIME_WAIT状态的连接的pid,只好尝试其它的办法。

再用 jstack -l pid 来查看进程的线程栈,也没有发现什么异常的东东。查看到有几个zookeeper连接的线程,但也是正常状态。
例如/usr/jdk64/jdk1.7.0_67/bin/jstat -gcutil 221470 1000

再检查了机器的IO,CPU,内存,也没有异常的情况。

没找到什么有用的信息,只好再研究下netstat的参数:
发现用 netstat -ae 输出了一些信息:

tcp        0      0 192.168.9.45:41772     192.168.9.40:eforward     TIME_WAIT   root       0            
tcp        0      0 192.168.9.45:41412     192.168.9.40:eforward     TIME_WAIT   root       0            
tcp        0      0 192.168.9.45:24226     192.168.9.40:2181         TIME_WAIT   root       0            
tcp        0      0 192.168.9.45:24623     192.168.9.40:2181         TIME_WAIT   root       0  


开始增加Zookeeper的链接设置:
tickTime=2000
改为tickTime=10000
观察没有作用。


于是尝试停止java程序,发现没有TIME_WAIT连接了。
但是确认是Java应用的问题,于是再重启Java应用,但没有再发现TIME_WAIT情况。

参考:http://blog.youkuaiyun.com/hengyunabc/article/details/41450003

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

解决 “unable to read additional data from server sessionid” 问题可以从以下几个方面入手: ### 检查服务器状态 确保 ZooKeeper 服务器正常运行,没有出现崩溃、资源耗尽等问题。可以查看服务器的日志文件,检查是否有异常信息。例如,在 Linux 系统中,可以通过以下命令查看 ZooKeeper 日志: ```bash tail -f /var/log/zookeeper/zookeeper.log ``` ### 检查网络连接 此错误可能是由于客户端与服务器之间的网络连接不稳定或中导致的。需要检查网络配置,确保客户端能够正常访问服务器的端口。可以使用 `ping` 和 `telnet` 命令来测试网络连接: ```bash ping <server_ip> telnet <server_ip> <server_port> ``` ### 检查会话超时设置 会话超时可能会导致服务器关闭与客户端的连接。可以检查客户端和服务器的会话超时配置,确保它们设置合理。在 ZooKeeper 的客户端配置文件中,可以找到类似如下的配置: ```properties sessionTimeout=30000 ``` 这里的 `sessionTimeout` 表示会话超时时间,单位为毫秒。 ### 检查服务器负载 如果服务器负载过高,可能会导致无法及时处理客户端的请求,从而关闭连接。可以使用系统监控工具(如 `top`、`htop` 等)检查服务器的 CPU、内存和磁盘使用情况,必要时进行优化或扩展服务器资源。 ### 重启服务 在某些情况下,简单地重启 ZooKeeper 服务器和客户端服务可以解决问题。可以按照以下步骤重启服务: ```bash # 停止 ZooKeeper 服务器 zkServer.sh stop # 启动 ZooKeeper 服务器 zkServer.sh start ``` ### 检查防火墙设置 防火墙可能会阻止客户端与服务器之间的通信。需要确保防火墙允许客户端访问 ZooKeeper 服务器的端口。例如,在 Linux 系统中,可以使用以下命令开放端口: ```bash # 开放 ZooKeeper 默认端口 2181 sudo iptables -A INPUT -p tcp --dport 2181 -j ACCEPT ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值