在Elasticsearch中增加队列的大小?

时间:2015-10-13 18:44:59

标签: exception elasticsearch

我一直在查看我的elasticsearch日志,我遇到了错误

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

在查找错误后,一般和共识是增加队列的大小,如此处所述 - https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html

我的问题是如何做到这一点?是否存在我缺少的配置文件?

3 个答案:

答案 0 :(得分:12)

从Elasticsearch 5开始,您无法使用API​​更新线程池搜索队列大小。它现在是节点级设置。请参阅this

  

线程池设置现在是节点级设置。因此,无法通过群集设置API更新线程池设置。

要更新线程池,您必须在每个节点的 elasticsearch.yml 文件中添加thread_pool.search.queue_size : <New size>,然后重新启动elasticsearch。

答案 1 :(得分:9)

要更改队列大小,可以将其添加到每个节点的配置文件中,如下所示:

threadpool.search.queue_size: <new queue size>

但是,这也需要重新启动群集。

直到Elasticsearch 2.x,您可以通过cluster-setting api进行更新,这不需要重新启动群集,但是Elasticsearch 5.x和更新版本已经不再使用此选项。

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

您可以按如下方式查询队列大小:

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

答案 2 :(得分:1)

从Elasticsearch 6开始,搜索线程池的类型已更改为fixed_auto_queue_size,这意味着在threadpool.search.queue_size中设置elasticsearch.yml是不够的,您必须控制{{1} }和min_queue_size参数,如下所示:

max_queue_size

我建议在进行任何更改之前,使用thread_pool.search.queue_size: <new_size> thread_pool.search.min_queue_size: <new_size> thread_pool.search.max_queue_size: <new_size> 查看节点中的当前线程池设置。有关_cluster/settings?include_defaults=true线程池read the docs.

的更多信息