Short-lived Remote EJB clients configured with jboss-ejb-client.properties calling EJB via SSL causing file descriptor leak on the server side.
Since the clients are short-lived, once the JVM is started it will setup the remote connection and invoke the EJB and then the connection is closed when the JVM finishes. With 2 short lived clients calling the server over and over, it leaks file descriptors on the server side.
Looking in the heap we see a lot of sun.security.ssl.SSLEngineImpl and suspect some issue in xnio or perhaps undertow :
Class Name | Ref. Objects | Shallow Heap | Ref. Shallow Heap | Retained Heap ----------------------------------------------------------------------------------------------------------------------------------------------------------------- org.xnio.nio.WorkerThread @ 0xe1aa6948 default I/O-4 Thread | 1 | 152 B | 32 B | 25.80 KB '- <Java Local>, delayWorkQueue java.util.TreeSet @ 0xe0b424b8 | 1 | 16 B | 32 B | 23.53 KB '- m java.util.TreeMap @ 0xe0b424c8 | 1 | 48 B | 32 B | 23.52 KB '- root java.util.TreeMap$Entry @ 0xf5cac080 | 1 | 40 B | 32 B | 23.45 KB '- key org.xnio.nio.WorkerThread$TimeKey @ 0xf5cac058 | 1 | 40 B | 32 B | 2.37 KB '- command io.undertow.server.protocol.ParseTimeoutUpdater @ 0xf5cac010 | 1 | 48 B | 32 B | 2.33 KB '- connection io.undertow.server.protocol.http.HttpServerConnection @ 0xf5cabd68| 1 | 96 B | 32 B | 2.28 KB '- channel io.undertow.protocols.ssl.UndertowSslConnection @ 0xf5cabbe0 | 1 | 48 B | 32 B | 72 B '- engine sun.security.ssl.SSLEngineImpl @ 0xf5c8a488 | 1 | 136 B | 32 B | 25.48 KB '- sslContext sun.security.ssl.SSLContextImpl$TLSContext @ 0xe1ac1970 | 1 | 64 B | 32 B | 5.12 KB '- serverCache sun.security.ssl.SSLSessionContextImpl @ 0xe1ac1b48 | 1 | 32 B | 32 B | 262.95 KB -----------------------------------------------------------------------------------------------------------------------------------------------------------------
Class Name | Ref. Objects | Shallow Heap | Ref. Shallow Heap | Retained Heap ----------------------------------------------------------------------------------------------------------------------------------------------------------------- org.xnio.nio.WorkerThread @ 0xe0afc450 default I/O-2 Thread | 129 | 152 B | 17.13 KB | 23.52 KB |- <Java Local>, selector sun.nio.ch.EPollSelectorImpl @ 0xe0afc670 | 123 | 72 B | 16.34 KB | 7.13 KB |- <Java Local>, delayWorkQueue java.util.TreeSet @ 0xe0afce38 | 6 | 16 B | 816 B | 21.23 KB | '- m java.util.TreeMap @ 0xe0afce48 | 6 | 48 B | 816 B | 21.21 KB | '- root java.util.TreeMap$Entry @ 0xf932a490 | 6 | 40 B | 816 B | 21.15 KB | |- right java.util.TreeMap$Entry @ 0xf5635d68 | 3 | 40 B | 408 B | 9.42 KB | |- left java.util.TreeMap$Entry @ 0xf92ea098 | 2 | 40 B | 272 B | 9.32 KB | |- key org.xnio.nio.WorkerThread$TimeKey @ 0xf932a4b8 | 1 | 40 B | 136 B | 2.37 KB | | '- command io.undertow.server.protocol.ParseTimeoutUpdater @ 0xf932a4e0 | 1 | 48 B | 136 B | 2.33 KB | | '- connection io.undertow.server.protocol.http.HttpServerConnection @ 0xf932a510| 1 | 96 B | 136 B | 2.28 KB | | '- channel io.undertow.protocols.ssl.UndertowSslConnection @ 0xf932a570 | 1 | 48 B | 136 B | 72 B | | '- engine sun.security.ssl.SSLEngineImpl @ 0xf933dbe8 | 1 | 136 B | 136 B | 25.48 KB -----------------------------------------------------------------------------------------------------------------------------------------------------------------
- incorporates
-
UNDERTOW-806 SslConduit may leak file descriptors if close() is not called
- Resolved
- is caused by
-
UNDERTOW-806 SslConduit may leak file descriptors if close() is not called
- Resolved
- is cloned by
-
JBEAP-5750 [GSS](7.0.z) Short-lived Remote EJB client calls over SSL Leaking File Descriptors server side
- Verified
- is incorporated by
-
JBEAP-5750 [GSS](7.0.z) Short-lived Remote EJB client calls over SSL Leaking File Descriptors server side
- Verified
-
JBEAP-5765 Upgrade Undertow from 1.4.0.Final to 1.4.3.Final
- Verified