码头 9.0.3 中的 Close_wait 太多
Posted
技术标签:
【中文标题】码头 9.0.3 中的 Close_wait 太多【英文标题】:Too many Close_wait in jetty 9.0.3 【发布时间】:2014-05-14 01:11:27 【问题描述】:我们在 jetty 9.0.3 服务器上部署了一个应用程序 REST 网关。对于部署在 jetty 中的服务的身份验证和授权,由 apache commons-httpclient3.1 负责。 当有大量并发线程访问 Rest 网关时,大量 CLOSE_WAIT 会堆积在 REST 网关机器中。 通过调用 apache commons 的 releaseConnections 方法正确关闭为向 enabler(END POINT)发送请求而打开的 Http 连接。 请让我知道如何处理这些 CLOSE_WAIT 或任何线索导致连接以 CLOSE_WAIT 结束。
【问题讨论】:
【参考方案1】:当 Apache commons http Client 3.1 提供 closeIdleConnections(0) 时,close_wait 连接消失。但是现在建立了太多的 TIME_WAIT 并且后端我收到了诸如“地址已在使用”之类的错误:(
在使用 closeIdleConnections(0) 后,最终没有看到 CLOSE_WAIT 连接。希望这个解决方案可以帮助其他人:)
【讨论】:
【参考方案2】:CLOSE_WAIT
表示 TCP 正在等待本地应用程序关闭其端的连接,该端已经被对端关闭。
所以你没有关闭它们。
【讨论】:
是的,明白了,但是检查了代码,无论我们在哪里打开连接,我们都会关闭。让我知道如何检查代码中的确切位置或码头级别的连接没有关闭。 这是哪个方向,谁关闭了发出请求的应用程序或为请求提供服务的服务器? @PaulTaylor 对等端已关闭连接,而本地应用程序尚未关闭。它没有正确检测到连接上的流结束,或者没有正确响应,或者卡在做其他事情。以上是关于码头 9.0.3 中的 Close_wait 太多的主要内容,如果未能解决你的问题,请参考以下文章
HttpClient当HTTP连接的时候出现大量CLOSE_WAIT连接(转)
Too many open files (CLOSE_WAIT过多)的解决方案:修改打开文件数的上限值调整TCP/IP的参数
码头 websocket 中的 ProtocolException 是啥意思?