目录
问题定位:Called write on non-open socket.
问题定位:Thrfit_EAGAIN (timed out).
问题定位:socket open() error:没有到主机的路由
Aache Thrift最常见的报错信息:
No more data to read
Called write on non-open socket
Connection refused
Thrift _EAGAIN(timed out)
Interrupted systemcall
当出现连接报错时,可以使用ping、netstat、ss、nc、telnet等工具或命令快速判断节点的网络状态。注意日志或者的UI出现RPC报错时,需要判断的是目的节点的状态。例如使用netstat -anp | grep “端口号”可以查看到当前进程是否对指定的端口号成功监听,同时查看当前的连接情况。
问题定位:No more data to read.
“No more data to read.”是最常见的Apache Thrift报错,该报错的根本原因是“连接被对端关闭”,这个报错信息是thrift独有的,只要看见这个报错,必然与thrift相关,原因可能是:
1、如果是长连接,连接闲置时间超过服务端的接收超时,则服务端就会将连接关闭,此后再使用该连接发送数据则会出现“No more data to read.”的报错;
2、此外,服务端连接进行recv时如果被系统中断打断,也会触发服务端关闭连接,此时客户端再对连接进行操作,同样会出现“No more data to read.”的报错;
3、并发压力比较大的时候,client端connect成功,但server端由于并发压力过大并没有真正的accept,client端此时再使用这个连接进行通信,同样会出现“No more data to read.”的报错。该问题可以通过调整TCP内核参数规避缓解