[[modules-threadpool]] == Thread Pool A node holds several thread pools in order to improve how threads are managed and memory consumption within a node. There are several thread pools, but the important ones include: [horizontal] `index`:: For index/delete operations, defaults to `fixed`, size `# of available processors`. `search`:: For count/search operations, defaults to `fixed`, size `3x # of available processors`. `suggest`:: For suggest operations, defaults to `fixed`, size `# of available processors`. `get`:: For get operations, defaults to `fixed` size `# of available processors`. `bulk`:: For bulk operations, defaults to `fixed` size `# of available processors`. `warmer`:: For segment warm-up operations, defaults to `scaling` with a `5m` keep-alive. `refresh`:: For refresh operations, defaults to `scaling` with a `5m` keep-alive. Changing a specific thread pool can be done by setting its type and specific type parameters, for example, changing the `index` thread pool to have more threads: [source,js] -------------------------------------------------- threadpool: index: type: fixed size: 30 -------------------------------------------------- NOTE: you can update threadpool settings live using <>. [float] === Thread pool types The following are the types of thread pools that can be used and their respective parameters: [float] ==== `cache` The `cache` thread pool is an unbounded thread pool that will spawn a thread if there are pending requests. Here is an example of how to set it: [source,js] -------------------------------------------------- threadpool: index: type: cached -------------------------------------------------- [float] ==== `fixed` The `fixed` thread pool holds a fixed size of threads to handle the requests with a queue (optionally bounded) for pending requests that have no threads to service them. The `size` parameter controls the number of threads, and defaults to the number of cores times 5. The `queue_size` allows to control the size of the queue of pending requests that have no threads to execute them. By default, it is set to `-1` which means its unbounded. When a request comes in and the queue is full, it will abort the request. [source,js] -------------------------------------------------- threadpool: index: type: fixed size: 30 queue_size: 1000 --------------------------------------------------