ElasticSearch線程池配置

一個Elasticsearch節點會有多個線程池,但重要的是下面四個:

索引(index):主要是索引數據和刪除數據操作(默認是cached類型)

搜索(search):主要是獲取,統計和搜索操作(默認是cached類型)

批量操作(bulk):主要是對索引的批量操作(默認是cached類型)

更新(refresh):主要是更新操作(默認是cached類型)

可以通過給設置一個參數來改變線程池的類型(type),例如,把索引的線程池改成blocking類型:

            min: 1  

            size: 30  

            wait_time: 30s 

下面是三種可以設置的線程池的類型


cache

cache線程池是一個無限大小的線程池,如果有很請求的話都會創建很多線程,下面是個例子:

    threadpool:  
        index:  
            type: cached 

fixed

fixed線程池保持固定個數的線程來處理請求隊列。

size參數設置線程的個數,默認設置是cpu核心數的5倍

queue_size可以控制待處理請求隊列的大小。默認是設置爲-1,意味着無限制。當一個請求到來但隊列滿了的時候,reject_policy參數可以控制它的行爲。默認是abort,會使那個請求失敗。設置成caller會使該請求在io線程中執行。

    threadpool:  
        index:  
            type: fixed  
            size: 30  
            queue: 1000  
            reject_policy: caller 

blocking

blocking線程池允許設置一個最小值(min,默認爲1)和線程池大小(size,默認爲cpu核心數的5倍)。它也有一個等待隊列,隊列的大小(queue_size )默認是1000,當這隊列滿了的時候。它會根據定好的等待時間(wait_time,默認是60秒)來調用io線程,如果沒有執行就會報錯。

    threadpool:  
        index:  
            type: blocking  
            min: 1  
            size: 30  
            wait_time: 30s  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章