[英]Sockets in CLOSE_WAIT from Jersey Client
我正在使用Jersey 1.4, ApacheHttpClient
和Apache MultiThreadedHttpConnectionManager
类来管理连接。 对于HttpConnectionManager
,我将staleCheckingEnabled设置为true,将maxConnectionsPerHost设置为1000,将maxTotalConnections设置为1000。其他所有设置均为默认设置。 我们正在Tomcat中运行,并使用Jersey客户端与多个外部主机建立连接。
我注意到一段时间后,我将开始看到与Tomcat进程相关联的CLOSE_WAIT状态的套接字。 使用tcpdump进行的一些监视显示,一段时间后,外部主机似乎正在关闭连接,但最终没有关闭。 通常,套接字读取队列中有一些数据,通常为24个字节。 连接使用的是https,数据似乎已加密,所以我不确定它是什么。
我已检查确保已关闭创建的ClientRequest对象。 CLOSE_WAIT中的套接字似乎确实被回收了,至少在目前,我们没有耗尽任何资源。 我不确定外部服务器上正在发生什么。
我的问题是,这很正常吗?
谢谢,
约翰
这可能是防火墙或远程服务器等设备使TCP会话超时的设备。 您可以使用Wireshark分析HTTPS的数据包捕获,如其SSL页面所述:
staleCheckingEnabled标志仅在您实际使用连接时才发出检查,因此不需要网络资源(TCP会话)时就不会使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.