Transport
max-socket-threads (default 0) - The max number of threads dedicated to the initial request processing. Zero indicates to use the system default of max available processors. All the access to Teiid (JDBC, ODBC, etc) is controlled by "transport" element in the configuration. Socket threads are configured for each transport. They handle NIO non-blocking IO operations as well as directly servicing any operation that can run without blocking. For longer running operations, the socket threads queue with work the query engine.
Query Engine
max-threads (default 64) - The query engine has several settings that determine its thread utilization. max-threads
sets the total number of threads available in the process pool for query engine work (processing plans, transaction control operations, processing source queries, etc.). You should consider increasing the maximum threads on systems with a large number of available processors and/or when it’s common to issue non-transactional queries that issue a large number of concurrent source requests.
max-active-plans (default 20) - Should always be smaller than max-threads. By default, thread-count-for-source-concurrency is calculated by (max-threads / max_active_plans) * 2 to determine the threads available for processing concurrent source requests for each user query. Increasing the max-active-plans should be considered for workloads with a high number of long running queries and/or systems with a large number of available processors. If memory issues arise from increasing the max-threads and max-active-plans, then consider decreasing the amount of heap held by the buffer manager or decreasing the processor-batch-size to limit the base number of memory rows consumed by each plan.
thread-count-for-source-concurrency (default 0) - Should always be smaller than max-threads, sets the number of concurrently executing source queries per user request. 0 indicates to use the default calculated value based on 2 * (max-threads / max-active-plans). Setting this to 1 forces serial execution of all source queries by the processing thread. Any number greater than 1 limits the maximum number of concurrently execution source requests according. Using the respective defaults, this means that each user request would be allowed 6 concurrently executing source queries. If the default calculated value is not applicable to your workload, for example, if you have queries that generate more concurrent long running source queries, you should adjust this value.
time-slice-in-milliseconds (default 2000) - Provides course scheduling of long running processor plans. Plans whose execution exceed a time slice will be re-queued for additional processing to allow for other plans to be initiated. The time slice is from the perspective of the engine processing thread. This value is not honored exactly as the plan may not be at a re-startable point when the time slice expires. This is not a replacement for the thread scheduling performed by Java and the operating system, rather it just ensures that Teiid allows other work to be started if the current set of active plans includes long running queries.
Async Operations
async-thread-pool-max-thread-count (default 10) - Controls the number of threads available for system level async operations, such as metadata load.