1

我正在开发一个 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 状态的现有连接?

4

1 回答 1

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)有一个相当好的解释。

于 2013-08-30T19:13:01.387 回答