I/O threads experience increased CPU usage for https-listener when task worker thread pool is exhausted in JBoss EAP 7

Solution Verified - Updated -

Issue

  • We ran into a situation of exhausted task threads from long-running application requests that were blocked and waiting for a long time. But at that time, we saw increased CPU from the default I/O threads in JBoss EAP 7. The high CPU threads can be seen cycling over SslConduit.read calls from the AlpnOpenListener or HttpReadListener:
12:56:10,512 INFO  [stdout] (default I/O-17) io.undertow.protocols.ssl.SslConduit.doUnwrap(SslConduit.java:720)
12:56:10,512 INFO  [stdout] (default I/O-17) io.undertow.protocols.ssl.SslConduit.read(SslConduit.java:588)
12:56:10,512 INFO  [stdout] (default I/O-17) org.xnio.conduits.ConduitStreamSourceChannel.read(ConduitStreamSourceChannel.java:127)
12:56:10,512 INFO  [stdout] (default I/O-17) io.undertow.server.protocol.http.AlpnOpenListener$AlpnConnectionListener.handleEvent(AlpnOpenListener.java:356)
12:56:10,512 INFO  [stdout] (default I/O-17) io.undertow.server.protocol.http.AlpnOpenListener$AlpnConnectionListener.handleEvent(AlpnOpenListener.java:341)
12:56:10,512 INFO  [stdout] (default I/O-17) org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
12:56:10,512 INFO  [stdout] (default I/O-17) org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
12:56:10,512 INFO  [stdout] (default I/O-17) io.undertow.protocols.ssl.SslConduit$SslReadReadyHandler.readReady(SslConduit.java:1291)
12:56:10,512 INFO  [stdout] (default I/O-17) org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:89)
12:56:10,512 INFO  [stdout] (default I/O-17) org.xnio.nio.WorkerThread.run(WorkerThread.java:591)

10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.protocols.ssl.SslConduit.doUnwrap(SslConduit.java:850)
10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.protocols.ssl.SslConduit.read(SslConduit.java:587)
10:14:29,798 INFO  [stdout] (default I/O-23) org.xnio.conduits.AbstractStreamSourceConduit.read(AbstractStreamSourceConduit.java:51)
10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.conduits.BytesReceivedStreamSourceConduit.read(BytesReceivedStreamSourceConduit.java:67)
10:14:29,798 INFO  [stdout] (default I/O-23) org.xnio.conduits.ConduitStreamSourceChannel.read(ConduitStreamSourceChannel.java:127)
10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:158)
10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:136)
10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:59)
10:14:29,798 INFO  [stdout] (default I/O-23) org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
10:14:29,798 INFO  [stdout] (default I/O-23) org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.protocols.ssl.SslConduit$SslReadReadyHandler.readReady(SslConduit.java:1274)
10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.protocols.ssl.SslConduit$1.run(SslConduit.java:183)
10:14:29,798 INFO  [stdout] (default I/O-23) io.undertow.protocols.ssl.SslConduit$2.run(SslConduit.java:198)
10:14:29,798 INFO  [stdout] (default I/O-23) org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612)

Environment

  • JBoss Enterprise Application Platform (EAP)
    • 7.x
    • 8.x

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content