java - WS 客户端中的许多 TIME_WAIT 连接

标签 java web-services tcp glassfish jax-ws

我正在开发 JAX-WS 网络服务客户端。此客户端是部署在 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 状态的现有连接?

最佳答案

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

关于java - WS 客户端中的许多 TIME_WAIT 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18532369/

相关文章:

c# - 多个接收者的消息广播

java - 如何将从任何端口接收到的数据发送到另一台机器?

java - Selenium IE 驱动程序无法在 VPN 上运行

java - 如何制作调用其他注解的注解

java - 使用 java.time.DayOfWeek 设置 Calendar.DAY_OF_WEEK

web-services - 确保 REST API 安全,无需重新发明轮子

c - 写入n个字节并读取n个字节: sending number of bytes to read using uint16_t

tcp - 如何从 TCP 套接字获取 RSSI 和 SNR 值

php - 使用 PHP 发送带有 WSDL Soap 请求的 Soap header

web-services - JAX-WS 独立服务器通过证书相互认证