Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Increasing the size of the queue in Elasticsearch?

Ive been looking at my elasticsearch logs, and I came across the error

rejected execution (queue capacity 1000) on org.elasticsearch.search.action.SearchServiceTransportAction$23@6d32fa18

After looking up the error, the general and consensus was to increase the size of the queue as talked about here - https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html

The question I have is how to do I actually do this? Is there aconfiguration file somewhere that I am missing?

like image 593
Proximus Avatar asked Oct 13 '15 18:10

Proximus


3 Answers

From Elasticsearch 5 onward you cannot use the API to update the threadpool search queue size. It is now a node-level settings. See this.

Thread pool settings are now node-level settings. As such, it is not possible to update thread pool settings via the cluster settings API.

To update the threadpool you have to add thread_pool.search.queue_size : <New size> in elasticsearch.yml file of each node and then restart elasticsearch.

like image 55
Zeeshan Avatar answered Nov 19 '22 19:11

Zeeshan


As of Elasticsearch 6 the type of the search thread pool has changed to fixed_auto_queue_size, which means setting threadpool.search.queue_size in elasticsearch.yml is not enough, you have to control the min_queue_size and max_queue_size parameters as well, like this:

thread_pool.search.queue_size: <new_size>
thread_pool.search.min_queue_size: <new_size>
thread_pool.search.max_queue_size: <new_size>

I recommend using _cluster/settings?include_defaults=true to view the current thread pool settings in your nodes before making any changes. For more information about the fixed_auto_queue_size thread pool read the docs.

like image 25
Doron Yaacoby Avatar answered Nov 19 '22 19:11

Doron Yaacoby


To change the queue size one could add it in the config file for each of the nodes as follows:

threadpool.search.queue_size: <new queue size> .

However this would also require a cluster restart.

Up to Elasticsearch 2.x, you can update via the cluster-setting api and this would not require a cluster restart, however this option is gone with Elasticsearch 5.x and newer.

curl -XPUT  _cluster/settings -d '{
    "persistent" : {
        "threadpool.search.queue_size" : <new_size>
    }
}'

You can query the queue size as follows:

curl <server>/_cat/thread_pool?v&h=search.queueSize

like image 10
keety Avatar answered Nov 19 '22 18:11

keety