0 Replies Latest reply on Apr 24, 2014 12:35 AM by Sam 顾

    too many free threads in threads pool

    Sam 顾 Newbie

      There are a lot of free threads in jboss as 7 thread pool,the thread dump is below :

       

      "thread_size-threads - 456" prio=6 tid=0x0000000025dff000 nid=0x20f0 waiting on condition [0x000000004b6ef000]

         java.lang.Thread.State: WAITING (parking)

        at sun.misc.Unsafe.park(Native Method)

        - parking to wait for  <0x0000000780520778> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)

        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)

        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

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

        at org.jboss.threads.JBossThread.run(JBossThread.java:122)

       

       

        Locked ownable synchronizers:

        - None

       

       

      "thread_size-threads - 455" prio=6 tid=0x0000000025dfe000 nid=0x1b70 waiting on condition [0x000000004bf9e000]

         java.lang.Thread.State: WAITING (parking)

        at sun.misc.Unsafe.park(Native Method)

        - parking to wait for  <0x0000000780520778> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)

        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)

        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

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

        at org.jboss.threads.JBossThread.run(JBossThread.java:122)

       

       

         Locked ownable synchronizers:

        - None

           this thread is more than 400,but i have set the thread keeplive-time ,why it is't effect??

      My thread pool config :

           

      <subsystem xmlns="urn:jboss:domain:threads:1.1">

                  <unbounded-queue-thread-pool name="thread_size">

                      <max-threads count="500"/>

                      <keepalive-time time="30" unit="seconds"/>

                  </unbounded-queue-thread-pool>

              </subsystem>

       

       

      <subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false">

                  <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" executor="thread_size" max-connections="1000"/>

                  <virtual-server name="default-host" enable-welcome-root="false">

                      <alias name="localhost"/>

                      <alias name="example.com"/>

                  </virtual-server>

              </subsystem>