2 Replies Latest reply on Apr 11, 2011 9:12 PM by shawkins

    Can some one tell the meaning of the warning Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "1".

    rakeshsagar

      Hi all,

       

      I had decreased the number of threads available in teiid-jboss-beans.xml to 17 and restarted JBoss and tried to connect to Teiid and getting the following warnings in the server log.

       

              <!-- Process pool maximum thread count. (default 64) -->

              <property name="maxThreads">17</property>

              <!-- Max active plans (default 20).  Increase this value on highly concurrent systems - but ensure that the underlying pools can handle the increased load without timeouts. -->

              <property name="maxActivePlans">16</property>

       

       

       

      WARN  [RUNTIME] Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "1".

      WARN  [RUNTIME] Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "5".

      WARN  [RUNTIME] Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "6".

      WARN  [RUNTIME] Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "4".

      WARN  [RUNTIME] Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "3".

      WARN  [RUNTIME] Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "2".

       

       

      Can anyone tell me the significance of these warnings.

      Can these warnings be ignored or do we need to modify any files for this warnings to disappear?

       

      Thanks

      Rakesh.

        • 1. Can some one tell the meaning of the warning Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "1".
          rareddy

          Rakesh,

           

          It means that based on the load on Teiid Server, it has used up all the allocated threads in the engine, if any additional load placed on the engine, the queries will be queued and subject to delays in processing. If you are trying to properly size your system for optimal load vs processing, you can not ignore these warnings.

           

          Thanks


          Ramesh..

          • 2. Can some one tell the meaning of the warning Reached maximum thread count "17" for worker pool "QueryProcessorQueue" with a queue size of "1".
            shawkins

            Rakesh,

             

            For more  background, see also the doc section on threading: http://docs.jboss.org/teiid/7.3.0.Final/admin-guide/en-US/html_single/#d0e930

             

            And this posting: http://community.jboss.org/thread/164299

             

            In short you have explicitly configured the system to use only 17 processing threads while allowing 16 concurrent plans.  If a typical plan issues concurrent qurries, then hitting your max plans of 16 (which will happen with 16 or more clients concurrently issuing querries) will queue processing work until a thread is available.  Thus the warning when you hit a new high for the queue depth.

             

            As Ramesh says, you probably want to adjust your setting so that this type of warning is rare.  For example if you do want Teiid processing to only consume 17 threads, then more than likely you would want to reduce the maxActivePlans.  It is better to not start processing a plan (buffers will be left available and there is less chance of resource contention) at all rather than relying on the maxThreads to queue work.  On the otherhand if you do want to fully concurrently process all of your 16 maxActivePlans, then you probably should increase your maxThreads.

             

            There is also the possibility that your plans do not issue source queries concurrently (for example issuing a query directly to a single source), in which case the warning can mostly be ignored.  This is because the processing thread submits the source request to be executed in a separate thread prior to relinquishing itself back to the thread pool.   This means that there is some small overlap in thread usage that is not reflective of actual contention for threads.

             

            The docs have also been updated to reflect changes in 7.4 if you are using a beta.

             

            Steve