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

Hello

 

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:

<blockquote>

"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)

</blockquote>

- 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!