【问题标题】:Many TIME_WAIT connections in WS clientWS 客户端中的许多 TIME_WAIT 连接
【发布时间】:2026-01-14 23:35:01
【问题描述】:

我正在开发一个 JAX-WS Web 服务客户端。此客户端是部署在 Glassfish 3.2.1 服务器上的 Web 应用程序的一部分,并从 servlet 调用。操作系统是Windows Server 2003,我使用JDK 6。它在一分钟内向部署在其他机器上的Web服务发送数百个请求。

问题是客户端生成了越来越多的处于TIME_WAIT状态的连接(我可以在netstat中看到)。我认为打开“keep-alive”选项可以解决问题,但它没有发生 - WS 客户端打开新连接而不是重用处于 TIME_WAIT 状态的连接。

我尝试调整 Glassfish 中的“maxConnections”选项,但没有帮助。我也尝试过 JDK 7,结果相同。

是否可以在客户端请求完成后立即关闭连接,或者重用处于 TIME_WAIT 状态的现有连接?

【问题讨论】:

  • 你应该看看为什么 HTTP keep-alive 不起作用。

标签: java web-services tcp glassfish jax-ws


【解决方案1】:

根据关于“TCP 连接状态和 Netstat 输出”的 Microsoft 知识库文章 (http://support.microsoft.com/kb/137984),在客户端断开连接后,关闭的连接保持在 TIMED_WAIT 中是完全正常的。这是操作系统清理过程的一部分。关于超级用户(https://superuser.com/questions/173535/what-are-close-wait-and-time-wait-states)有一个相当好的解释。

【讨论】:

    最近更新 更多