关于tcp异常不能关闭的问题,求大神指点

问个问题,公司用rpc服务,当服务端kill掉进程,服务端发送fin码了,同一台服务器上的客户端调用的tcp能够如期正常的四次挥手关闭连接,但是另一台机器上客户端的tcp不能关闭,并且处于ESTABLISHED状态,用的长连接,希望能给点经验。

另一台客户端 还能提供服务吗

另一台客户端跟服务器之间的长连接加一个心跳包机制,当心跳包超时了,就断开当前连接

RPC连接是由 client 端发起建立并维持。如果 client 和 server 之间是直连的,那么连接一般不会中断(当然物理链路故障除外)。如果 client 和 server 连接经过一些负载中转设备,有可能连接一段时间不活跃时会被这些中间设备中断。为了保持连接有必要定时为每个连接发送心跳数据以维持连接不中断。心跳消息是 RPC 框架库使用的内部消息,在协议头结构中设置一个专门的心跳位,用来标记心跳消息,它对业务应用透明。