1

现在我们遇到了一个问题,我们的 Windows 服务器上有一堆“打开的 TCP 连接”,它们正在运行一个 tomcat 网络服务器。Java 代码正在对供应商进行 SOAP 调用,我们在资源监视器(如下图所示)中看到许多打开的连接,显示了供应商的 IP 地址。我尝试了几种不同的方法来执行 SOAP 调用,认为连接没有在幕后某处显式关闭。到目前为止没有任何效果,所以我想我可能误解了这个页面实际显示的内容。

带有供应商 IP 的多个 java.exe(未灰显)的 Windows 资源监视器 TCP 连接

与 Windows 资源监视器相关的 TCP 连接的生命周期是什么?不再使用的连接在外面停留一段时间是否正常?如果没有,我该如何补救这种情况?

4

1 回答 1

0

它可能是连接池或代码中的资源泄漏。

为确保它不是资源泄漏,请检查您的代码以确保进行网络调用的任何对象在使用后关闭连接,否则您将等待垃圾收集器运行。

但是,如果网络客户端支持连接池,那么关闭它可能只会将打开的连接放回池中,以便快速重用。你没有说你正在使用哪个客户端 API,但如果它支持池,那么它应该提供一个 API 来说明释放的连接在池中保留多长时间。

没有 Windows Winsock 级别的池或持久性。如果底层套接字被关闭,那么就是这样,它就会被关闭。

于 2019-02-18T17:00:38.123 回答