3 Replies Latest reply on Mar 29, 2008 9:21 AM by vijaychhipa

    Thread pools configuration

      Hi,

      I'm performing load tests on my jBoss instance. My tests make requests through web service, and the processing uses JMS and JCA data sources. I'm having blocking problems, so the performance is not as high as expected, and the CPU usage is around 30%.

      I have taken a look at the configuration of all thread pools jBoss uses, in order to set appropiated values for improving performance. These are the ones I have found:

      - JBoss System Threads in jboss-service.xml
      - JMS Threads in jbossmq-service.xml
      - JCA Threads in jobssjca-service.xml
      - Tomcat threads on jbossweb-tomcat55.sar/server.xml

      I wonder if there are more thread pools I'm ignoring that could affect performance, and also I would like to know the relationship between services deployed in jboss and how they use those pools, so I could detect bottlenecks.

      Also I would like to know how to increase the number of instance of EJBs and how it is affected by the thread pools.

      Thanks a lot,

      Bortx.

        • 1. Re: Thread pools configuration
          genman

          Merely increasing the size of the thread pools won't necessarily increase throughput.

          What is blocking? It may be something external to JBoss (i.e. your database) which is causing low CPU utilization.

          • 2. Re: Thread pools configuration
            mushkevych

            Hi

            i have run into similar problem
            our server has 200-300 threads, while most of them (80%) are in TIMED_WAITING and WAITING states.

            Most of waiting threads has JMS origin (EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run)

            could you share any hints how you fought this issue?

            • 3. Re: Thread pools configuration
              vijaychhipa

              Hi
              I am having the same problem.
              I am running JBoss 4.0.5GA on JDK 1.5 and JBoss Portal

              I have hundreds on threads in the TIMED_WAITING status. Once they get in to this status they never come out of it.

              Thread Group: JBoss Pooled Threads : max priority:10, demon:false
              
               Thread: WorkManager(3)-1 : priority:5, demon:true, threadId:40, threadState:WAITING, threadLockName:EDU.oswego.cs.dl.util.concurrent.Semaphore@1896f04d
              
               java.lang.Object.wait(Native Method)
               java.lang.Object.wait(Object.java:474)
               EDU.oswego.cs.dl.util.concurrent.Semaphore.acquire(Semaphore.java:108)
               EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel.take(SemaphoreControlledChannel.java:131)
               org.jboss.resource.adapter.mail.inflow.NewMsgsWorker.run(NewMsgsWorker.java:75)
               org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
               org.jboss.
              
              util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
               EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
               java.lang.Thread.run(Thread.java:595)
              
              
              


              OR

              Thread: UIL2(SocketManager.MsgPool@60528e27 client=10.1.12.233:52183)#1 : priority:5, demon:true, threadId:91, threadState:TIMED_WAITING, threadLockName:EDU.oswego.cs.dl.util.concurrent.LinkedNode@76f2e414
              
               java.lang.Object.wait(Native Method)
               EDU.oswego.cs.dl.util.concurrent.SynchronousChannel.poll(SynchronousChannel.java:353)
               EDU.oswego.cs.dl.util.concurrent.PooledExecutor.getTask(PooledExecutor.java:723)
               EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:747)
               java.lang.Thread.run(Thread.java:595)
              
              


              Only solution I have so far, is to restart JBoss app server.