CLOSE_WAIT 中的 Jetty 连接未关闭
Jetty connections in CLOSE_WAIT are not closed
CLOSE_WAIT 中的 Jetty 连接未关闭。
嵌入式码头(9.4.11)与 Glassfish 一起用于容器和依赖注入。 Ngnix 负载均衡器将请求转发到充当客户端的码头。在 Ngnix 服务器(客户端)上,码头 TCP request/connection 进入 FIN_WAIT2 状态,然后最终关闭,但是在码头(服务器)上,连接永远处于 close_wait 状态并且不会关闭。
任何可能的解决方案或配置更改来解决它?
参考:Jetty 开放问题 link。
Jetty-9.2 connections in CLOSE_WAIT are not closed
HTTP 配置(jetty.xml):
<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<Set name="secureScheme">http</Set>
<Set name="securePort"><Property name="jetty.secure.port" default="8443" /></Set>
<Set name="outputBufferSize"><Property name="jetty.output.buffer.size" default="32768" /></Set>
<Set name="outputAggregationSize"><Property name="jetty.output.aggregation.size" default="8192" /></Set>
<Set name="requestHeaderSize"><Property name="jetty.request.header.size" default="8192" /></Set>
<Set name="responseHeaderSize"><Property name="jetty.response.header.size" default="8192" /></Set>
<Set name="sendServerVersion"><Property name="jetty.send.server.version" default="false" /></Set>
<Set name="sendDateHeader"><Property name="jetty.send.date.header" default="false" /></Set>
<Set name="headerCacheSize"><Property name="jetty.header.cache.size" default="512" /></Set>
<Set name="delayDispatchUntilContent"><Property name="jetty.delayDispatchUntilContent" default="false"/></Set>
<Set name="persistentConnectionsEnabled"><Property name="jetty.persistentConnectionsEnabled" default="false"/>false</Set>
<Call name="addCustomizer">
<Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
</Call>
</New>
<Call id="httpsConnector" name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref refid="Server" /></Arg>
<Arg name="acceptors" type="int"><Property name="ssl.acceptors" default="5"/></Arg>
<Arg name="selectors" type="int"><Property name="ssl.selectors" default="0"/></Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config"><Ref refid="httpConfig"/></Arg>
</New>
</Item>
</Array>
</Arg>
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="http.port" default="8443" /></Set>
<Set name="idleTimeout"><Property name="https.timeout" default="30000"/></Set>
<Set name="acceptorPriorityDelta"><Property name="ssl.acceptorPriorityDelta" default="0"/></Set>
<Set name="acceptQueueSize"><Property name="https.acceptQueueSize" default="150"/></Set>
</New>
</Arg>
</Call>
通过分析线程转储,我发现应用程序线程正处于等待状态(java.lang.Thread.State: WAITING (parking))导致完全锁定。部署在 Jetty 中的应用程序使用的其他库导致线程等待而不是 Jetty。
CLOSE_WAIT 中的 Jetty 连接未关闭。 嵌入式码头(9.4.11)与 Glassfish 一起用于容器和依赖注入。 Ngnix 负载均衡器将请求转发到充当客户端的码头。在 Ngnix 服务器(客户端)上,码头 TCP request/connection 进入 FIN_WAIT2 状态,然后最终关闭,但是在码头(服务器)上,连接永远处于 close_wait 状态并且不会关闭。
任何可能的解决方案或配置更改来解决它?
参考:Jetty 开放问题 link。 Jetty-9.2 connections in CLOSE_WAIT are not closed
HTTP 配置(jetty.xml):
<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<Set name="secureScheme">http</Set>
<Set name="securePort"><Property name="jetty.secure.port" default="8443" /></Set>
<Set name="outputBufferSize"><Property name="jetty.output.buffer.size" default="32768" /></Set>
<Set name="outputAggregationSize"><Property name="jetty.output.aggregation.size" default="8192" /></Set>
<Set name="requestHeaderSize"><Property name="jetty.request.header.size" default="8192" /></Set>
<Set name="responseHeaderSize"><Property name="jetty.response.header.size" default="8192" /></Set>
<Set name="sendServerVersion"><Property name="jetty.send.server.version" default="false" /></Set>
<Set name="sendDateHeader"><Property name="jetty.send.date.header" default="false" /></Set>
<Set name="headerCacheSize"><Property name="jetty.header.cache.size" default="512" /></Set>
<Set name="delayDispatchUntilContent"><Property name="jetty.delayDispatchUntilContent" default="false"/></Set>
<Set name="persistentConnectionsEnabled"><Property name="jetty.persistentConnectionsEnabled" default="false"/>false</Set>
<Call name="addCustomizer">
<Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
</Call>
</New>
<Call id="httpsConnector" name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref refid="Server" /></Arg>
<Arg name="acceptors" type="int"><Property name="ssl.acceptors" default="5"/></Arg>
<Arg name="selectors" type="int"><Property name="ssl.selectors" default="0"/></Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config"><Ref refid="httpConfig"/></Arg>
</New>
</Item>
</Array>
</Arg>
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="http.port" default="8443" /></Set>
<Set name="idleTimeout"><Property name="https.timeout" default="30000"/></Set>
<Set name="acceptorPriorityDelta"><Property name="ssl.acceptorPriorityDelta" default="0"/></Set>
<Set name="acceptQueueSize"><Property name="https.acceptQueueSize" default="150"/></Set>
</New>
</Arg>
</Call>
通过分析线程转储,我发现应用程序线程正处于等待状态(java.lang.Thread.State: WAITING (parking))导致完全锁定。部署在 Jetty 中的应用程序使用的其他库导致线程等待而不是 Jetty。