2013-08-28 19:24:34 -04:00
|
|
|
[[modules-threadpool]]
|
|
|
|
== Thread Pool
|
|
|
|
|
2014-11-11 17:35:55 -05:00
|
|
|
A node holds several thread pools in order to improve how threads memory consumption
|
|
|
|
are managed within a node. Many of these pools also have queues associated with them,
|
|
|
|
which allow pending requests to be held instead
|
|
|
|
of discarded.
|
|
|
|
|
|
|
|
|
|
|
|
There are several thread pools, but the important ones include:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2014-11-11 17:35:55 -05:00
|
|
|
`index`::
|
|
|
|
For index/delete operations. Defaults to `fixed`
|
|
|
|
with a size of `# of available processors`,
|
|
|
|
queue_size of `200`.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2014-11-11 17:35:55 -05:00
|
|
|
`search`::
|
|
|
|
For count/search operations. Defaults to `fixed`
|
2015-07-17 10:06:03 -04:00
|
|
|
with a size of `int((# of available_processors * 3) / 2) + 1`,
|
2014-11-11 17:35:55 -05:00
|
|
|
queue_size of `1000`.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2013-09-14 19:54:27 -04:00
|
|
|
`suggest`::
|
2014-11-11 17:35:55 -05:00
|
|
|
For suggest operations. Defaults to `fixed`
|
|
|
|
with a size of `# of available processors`,
|
|
|
|
queue_size of `1000`.
|
2013-09-14 19:54:27 -04:00
|
|
|
|
2014-11-11 17:35:55 -05:00
|
|
|
`get`::
|
|
|
|
For get operations. Defaults to `fixed`
|
|
|
|
with a size of `# of available processors`,
|
|
|
|
queue_size of `1000`.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2013-10-12 15:51:37 -04:00
|
|
|
`bulk`::
|
2014-11-11 17:35:55 -05:00
|
|
|
For bulk operations. Defaults to `fixed`
|
|
|
|
with a size of `# of available processors`,
|
|
|
|
queue_size of `50`.
|
2013-10-12 15:51:37 -04:00
|
|
|
|
|
|
|
`percolate`::
|
2014-11-11 17:35:55 -05:00
|
|
|
For percolate operations. Defaults to `fixed`
|
|
|
|
with a size of `# of available processors`,
|
|
|
|
queue_size of `1000`.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2014-05-14 20:06:27 -04:00
|
|
|
`snapshot`::
|
2015-07-15 08:11:06 -04:00
|
|
|
For snapshot/restore operations. Defaults to `scaling` with a
|
2015-10-19 15:13:14 -04:00
|
|
|
keep-alive of `5m` and a size of `min(5, (# of available processors)/2)`, max at 5.
|
2014-05-14 20:06:27 -04:00
|
|
|
|
|
|
|
`warmer`::
|
2015-07-15 08:11:06 -04:00
|
|
|
For segment warm-up operations. Defaults to `scaling` with a
|
2015-10-19 15:13:14 -04:00
|
|
|
keep-alive of `5m` and a size of `min(5, (# of available processors)/2)`, max at 5.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2014-11-11 17:35:55 -05:00
|
|
|
`refresh`::
|
2015-07-15 08:11:06 -04:00
|
|
|
For refresh operations. Defaults to `scaling` with a
|
2015-10-19 15:13:14 -04:00
|
|
|
keep-alive of `5m` and a size of `min(10, (# of available processors)/2)`, max at 10.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2014-09-23 10:26:33 -04:00
|
|
|
`listener`::
|
2014-11-11 17:35:55 -05:00
|
|
|
Mainly for java client executing of action when listener threaded is set to true.
|
|
|
|
Default size of `(# of available processors)/2`, max at 10.
|
2014-09-23 10:26:33 -04:00
|
|
|
|
2013-08-28 19:24:34 -04:00
|
|
|
Changing a specific thread pool can be done by setting its type and
|
|
|
|
specific type parameters, for example, changing the `index` thread pool
|
2013-09-20 06:31:17 -04:00
|
|
|
to have more threads:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
threadpool:
|
|
|
|
index:
|
2013-09-20 06:31:17 -04:00
|
|
|
type: fixed
|
2013-08-28 19:24:34 -04:00
|
|
|
size: 30
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
NOTE: you can update threadpool settings live using
|
|
|
|
<<cluster-update-settings>>.
|
|
|
|
|
|
|
|
|
|
|
|
[float]
|
2013-09-25 12:17:40 -04:00
|
|
|
[[types]]
|
2013-08-28 19:24:34 -04:00
|
|
|
=== 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
|
2013-09-20 06:31:17 -04:00
|
|
|
full, it will abort the request.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
threadpool:
|
|
|
|
index:
|
|
|
|
type: fixed
|
|
|
|
size: 30
|
|
|
|
queue_size: 1000
|
|
|
|
--------------------------------------------------
|
2013-09-20 06:35:27 -04:00
|
|
|
|
2015-07-15 08:11:06 -04:00
|
|
|
[float]
|
|
|
|
==== `scaling`
|
|
|
|
|
|
|
|
The `scaling` thread pool holds a dynamic number of threads. This number is
|
|
|
|
proportional to the workload and varies between 1 and the value of the
|
|
|
|
`size` parameter.
|
|
|
|
|
|
|
|
The `keep_alive` parameter determines how long a thread should be kept
|
|
|
|
around in the thread pool without it doing any work.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
threadpool:
|
|
|
|
warmer:
|
|
|
|
type: scaling
|
|
|
|
size: 8
|
|
|
|
keep_alive: 2m
|
|
|
|
--------------------------------------------------
|
|
|
|
|
2013-10-09 03:54:58 -04:00
|
|
|
[float]
|
2013-09-25 12:17:40 -04:00
|
|
|
[[processors]]
|
2013-09-20 06:35:27 -04:00
|
|
|
=== Processors setting
|
|
|
|
The number of processors is automatically detected, and the thread pool
|
|
|
|
settings are automatically set based on it. Sometimes, the number of processors
|
|
|
|
are wrongly detected, in such cases, the number of processors can be
|
|
|
|
explicitly set using the `processors` setting.
|
|
|
|
|
|
|
|
In order to check the number of processors detected, use the nodes info
|
2013-10-09 03:54:58 -04:00
|
|
|
API with the `os` flag.
|