我们有一个连接到外部计费服务器的应用程序。一旦客户端的服务器出现中断,就会有数百个连接处于 CLOSE_WAIT 状态。
我已经检查了客户端代码。似乎客户端正在正确关闭 TCP 连接。
如果发生这种情况是因为服务器由于服务器端的问题而没有正确关闭连接,有没有办法阻止客户端表单将套接字保持在 CLOSE_WAIT 状态?
我还观察到线程数和 cpu 使用率比平时增加了更多。
应用程序重新启动后,即使几个小时后也没有建立 CLOSE_WAIT,并且线程数和 cpu 使用率恢复正常。
如果 sever 有时无法正确关闭连接,除了重新启动客户端以删除 CLOSE_WAITs 之外,我们没有什么可做的吗?(我的意思是有任何代码改进可以防止客户端出现这个问题)
我们在客户端使用定制的 JDiameter 代码连接到计费服务器。
(我们无权访问服务器端代码)