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!