2 Replies Latest reply: Oct 14, 2011 4:18 PM by Vítor Corrêa RSS

Large number of threads/connections marked "keep alive"

Ben Hsu Newbie



We're seeing an issue where the performance of our application would degrade over time, to the point where its unresponsive. Based on what I see, I think it might be related to how we're configuring keep-alive, and I'm wondering where I can find more information about configuring keep-alive in JBoss.


The symptoms:

- The application's performance would degrade over the day

- eventually we will get a message saying "all 200 threads are busy, please increase the maximum thread count"

- at this point, doing a thread dump (using "kill -3") shows many threads in the following state:


"TP-Processor200" daemon prio=1 tid=0x0000002b31e372c0 nid=0x651a runnable [0x000000005408e000..0x000000005408ec30]

          at java.net.SocketInputStream.socketRead0(Native Method)

          at java.net.SocketInputStream.read(SocketInputStream.java:129)

          at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)

          at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)

          at java.io.BufferedInputStream.read(BufferedInputStream.java:313)

          - locked <0x0000002b082abec0> (a java.io.BufferedInputStream)

          at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:620)

          at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:558)

          at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:685)

          at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)

          at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

          at java.lang.Thread.run(Thread.java:595)


- when I look at the "connection scoreboard" in the JBoss web console, I see 200 connections marked with a "K" for "keep alive", also these connections look like they've been around for a long time (around 7,000,000ms, which will be 2 hours), long after we've killed all the clientsd


Based on what I saw above and some googling, I'm thinking this might be related to how we're configuring keep alive. I haven't been able to go further than this, because I don't know much about JBoss configuration. Does anybody have any information about how keep alive is being configured in JBoss?


We are using JBoss version 4.0.5 GA


Thank you!