我一直在查看我的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
我的问题是如何做到这一点?是否存在我缺少的配置文件?
答案 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.