2015-10-13 75 views
4

我一直都在我的elasticsearch日誌,我遇到了錯誤增加Elasticsearch隊列的大小?

rejected execution (queue capacity 1000) on [email protected]6d32fa18

來查找錯誤後,一般和共識是增加了隊列的大小就講到這兒 - https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html

我現在的問題是如何做到這一點呢?有什麼配置文件在我失蹤的地方?

+0

在少數情況下,這是建議。在大多數其他情況下,需要查看爲什麼羣集無法應對大量的搜索請求。集羣是否在其他方面超負荷?該集羣是否太小?等 –

+0

最有可能的兩個。大多數設置仍然被設置爲默認設置,並且它們在生產服務器上運行,因此需要配置很多東西。 – Proximus

+0

不,您錯了。僅僅因爲這些設置是默認設置,這並不意味着它們需要進行配置。在大多數情況下,ES中的默認設置通常都可以。 –

回答

7

要改變隊列的大小人們可以添加如下它在配置文件中的每個節點:

threadpool.search.queue_size: <new queue size>

但是,這也需要重新啓動集羣。

Alternativly你可以通過cluster-setting api更新,這將不需要集羣重啓:

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

您可以查詢隊列大小如下:

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

+0

謝謝,但每個節點的配置文件在哪裏? – Proximus

+1

@Proximus默認配置文件是'elasticsearch.yml',駐留在Elasticsearch目錄下的config目錄中,但這是默認配置文件,可能已被覆蓋。 – keety

+0

給downvoted的人試解釋其他原因不是很有幫助嗎? – keety

3

從Elasticsearch 5起你無法使用API​​更新線程池搜索隊列大小。它現在是一個節點級別的設置。見this

線程池設置現在是節點級設置。因此,無法通過羣集設置API更新線程池設置。

要更新,你必須在elasticsearch.yml文件中的每個節點的添加thread_pool.search.queue_size : <New size>,然後重新啓動elasticsearch線程池。