gpt4 book ai didi

java - 当服务器未正确关闭连接时,防止来自客户端的 CLOSE_WAITs

转载 作者:行者123 更新时间:2023-11-30 09:21:12 26 4
gpt4 key购买 nike

我们有一个连接到外部计费服务器的应用程序。一旦客户端的服务器出现中断,就会有数百个连接处于 CLOSE_WAIT 状态。

我检查了客户端代码。客户端似乎正在正确关闭 TCP 连接。

如果发生这种情况是因为服务器由于服务器端的问题而未正确关闭连接,是否有办法防止客户端将套接字保持在 CLOSE_WAIT 状态?

我还观察到线程数和 CPU 使用率比平时上升得更多。

应用程序重启后,几个小时后也没有 CLOSE_WAIT 累积,线程数和 CPU 使用率恢复正常。

如果服务器有时无法正确关闭连接,除了重新启动客户端以删除 CLOSE_WAITs 之外,我们没有什么可做的吗? (我的意思是有没有任何代码改进可以防止客户端出现这个问题)

我们在客户端使用自定义的 JDiameter 代码来连接到计费服务器。

(我们无权访问服务器端代码)

最佳答案

If this happened because server not closing the connection properly because of an issue form the server side ...

它没有。

RFC 793声明:“CLOSE_WAIT - 表示等待来自本地用户的连接终止请求。”这意味着对等方关闭连接:TCP 已收到 FIN,它正在等待本地应用程序执行同样的操作。

如果您在自己的连接端遇到此问题,则表明一件事:您没有关闭自己的套接字。您将忽略套接字上的 EOS 条件或异常,并继续使用它。

解决方案:不要。 EOS 意味着您必须停止读取并关闭套接字。除了 SocketTimeoutException 之外的任何 IOException 都是一样的。

关于java - 当服务器未正确关闭连接时,防止来自客户端的 CLOSE_WAITs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17085079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com