2015-10-20 95 views
0

acceptCount队列维护在操作系统级别。假设我们有一个10K的acceptCount队列。CLOSE_WAIT连接的Tomcat行为

情况 - 服务器无法处理请求,或者由于其中一个依赖关系或网络问题而需要很长时间,并且在所有客户端超时期间。最终队列有10K的CLOSE_WAIT连接。现在,如果服务再次备份并开始处理。它会清理CLOSE_WAIT连接队列吗?在这种情况下,tomcat将如何表现。

回答

0

约CLOSE_WAITS和达到最大连接数/线程数,一些提示 (我曾在WebLogic Server中类似的问题,但这些都是一般提示)

释放阻塞线程由于网络问题:(如果按照允许对企业)

  1. 设定超时值给所有的远程调用(如DB/HTTP/EJB/..)
  2. 检查终止/杀长时间运行的线程(请求)

在尝试任何解决方法之前,请仔细检查并找到根本原因。

CLOSE_WAITS在重负载期结束后应该清除以防万一这是问题,但是在线程卡住的情况下,您可能需要尽快重启以解决问题。

0

acceptCount队列维持在操作系统级别。

通过这个,我假设你的意思是监听积压队列。

比方说,我们有一个acceptCount队列10k。

有没有办法告诉。你可以提示给操作系统多长时间你会喜欢它,但是操作系统可以向上和向下调整它,并且没有API告诉你实际长度是多少。

最终队列有10k个CLOSE_WAIT连接。

不,它不。 CLOSE_WAIT状态不会在任何地方排队,并且监听积压队列与CLOSE_WAIT无关。

它会清理CLOSE_WAIT队列吗?

有没有这样的队列来清理。

如果你真正问的是将重启过程中清除所有端口在CLOSE_WAIT状态时,得到的答复是退出其持有他们会那样做的过程。

但是,让Tomcat检测所有关闭的连接并关闭它们本身也是如此。如果你有很多这些,真正的问题是它没有自动执行的原因。这应该。

如果这是由某个请求被转发引起的,那么这听起来像某些内部同步的东西,不应该在应用程序中同步。

+0

通过acceptCount,我正在讨论tomcat的acceptCount参数。 https://tomcat.apache.org/tomcat-7.0-doc/config/http.html – User23890

+0

@ User23890是。无论如何,与CLOSE_WAIT无关。 – EJP

+0

通过10K的CLOSE_WAIT连接队列,我的意思是OS上的连接队列。我想我在这里混淆了它。但是监听积压队列就是我所说的。与acceptCount不是一回事吗? 编辑 - 对不起然后它的maxConnections参数我在说 我想了解的事情是 - 如果您的服务已经超过千客户端发送数据和服务依赖关系之一,会发生什么。服务器将在服务端堆叠CLOSE_WAIT连接。不是吗?如果这是真的,他们将如何清理? – User23890