| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | [[modules-threadpool]]== Thread PoolA node holds several thread pools in order to improve how threads memory consumptionare managed within a node. Many of these pools also have queues associated with them,which allow pending requests to be held insteadof discarded.There are several thread pools, but the important ones include:[horizontal]`index`::    For index/delete operations. Defaults to `fixed`    with a size of `# of available processors`,    queue_size of `200`.`search`::    For count/search operations. Defaults to `fixed`    with a size of `3x # of available processors`,    queue_size of `1000`.`suggest`::    For suggest operations. Defaults to `fixed`    with a size of `# of available processors`,    queue_size of `1000`.`get`::    For get operations. Defaults to `fixed`    with a size of `# of available processors`,    queue_size of `1000`.`bulk`::    For bulk operations. Defaults to `fixed`    with a size of `# of available processors`,    queue_size of `50`.`percolate`::    For percolate operations. Defaults to `fixed`    with a size of `# of available processors`,    queue_size of `1000`.`snapshot`::    For snapshot/restore operations. Defaults to `scaling`,    keep-alive `5m` with a size of `(# of available processors)/2`.`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.`listener`::    Mainly for java client executing of action when listener threaded is set to true.    Default size of `(# of available processors)/2`, max at 10.Changing a specific thread pool can be done by setting its type andspecific type parameters, for example, changing the `index` thread poolto have more threads:[source,js]--------------------------------------------------threadpool:    index:        type: fixed        size: 30--------------------------------------------------NOTE: you can update threadpool settings live using      <<cluster-update-settings>>.[float][[types]]=== Thread pool typesThe following are the types of thread pools that can be used and theirrespective parameters:[float]==== `cache`The `cache` thread pool is an unbounded thread pool that will spawn athread if there are pending requests. Here is an example of how to setit:[source,js]--------------------------------------------------threadpool:    index:        type: cached--------------------------------------------------[float]==== `fixed`The `fixed` thread pool holds a fixed size of threads to handle therequests with a queue (optionally bounded) for pending requests thathave no threads to service them.The `size` parameter controls the number of threads, and defaults to thenumber of cores times 5.The `queue_size` allows to control the size of the queue of pendingrequests 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 isfull, it will abort the request.[source,js]--------------------------------------------------threadpool:    index:        type: fixed        size: 30        queue_size: 1000--------------------------------------------------[float][[processors]]=== Processors settingThe number of processors is automatically detected, and the thread poolsettings are automatically set based on it. Sometimes, the number of processorsare wrongly detected, in such cases, the number of processors can beexplicitly set using the `processors` setting.In order to check the number of processors detected, use the nodes infoAPI with the `os` flag.
 |