ElasticSearch性能優化方案

 

ElasticSearch性能優化主要分爲4個方面的優化。 

一、服務器部署   

1、增加1-2臺服務器,用於負載均衡節elasticSearch的配置文件中有2個參數:node.master和node.data。這兩個參數搭配使用時,能夠幫助提供服務器性能。  

node.master: false   

node.data: true         

該node服務器只作爲一個數據節點,只用於存儲索引數據。使該node服務器功能 單一,只用於數據存儲和數據查詢,降低其資源消耗率。     

node.master: true    

node.data: false         

該node服務器只作爲一個主節點,但不存儲任何索引數據。該node服務器將使用

自身空閒的資源,來協調各種創建索引請求或者查詢請求,講這些請求合理分發到相關 的node服務器上。      

node.master: false    

node.data: false    

該node服務器即不會被選作主節點,也不會存儲任何索引數據。

該服務器主要用 於查詢負載均衡。在查詢的時候,通常會涉及到從多個node服務器上查詢數據,並請求分發到多個指定的node服務器,並對各個node服務器返回的結果進行一個彙總處理, 最終返回給客戶端。   

注:服務器充足情況下可以根據上述配置

 

2、在生產環境儘量關閉data節點服務器中的http功能同時也不要安裝head, bigdesk, marvel等監控 插件,這樣保證data節點服務器只需處理創建/更新/刪除/查詢索引數據等操作。http功能可以在非數據節點服務器上開啓,上述相關的監控插件也安裝到這些服 務器上,用於監控ElasticSearch集羣狀態等數據信息這樣做一來出於數據安全考慮,二來出於服務性能考慮。

參數這樣設置:http.enabled: false

  

3、一臺服務器上最好只部署一個Node一臺物理服務器上可以啓動多個Node服務器節點(通過設置不同的啓動port), 但一臺服務器上的CPU,內存,硬盤等資源畢竟有限,從服務器性能考慮,在生產環境下不建議一臺 服務器上啓動多個node節點。   

 

二、服務器配置   

1.配置索引線程池的大小ElastiSearch服務器有多個線程池大小配置。主要有:index,search,suggest,get,bulk,percolate,snapshot,snapshot_data,warmer,refresh。   

在此主要針對index和search進行一個配置調整。

index:創建/更新/刪除索引數據。

Search主要針對用戶的各種搜索操作。  

具體配置如下:   

 threadpool:

     index:

         type: fixed

         size: 24邏輯核心數*3

         queue_ size: 1000

 

     search:

         type: fixed

         size: 24邏輯核心數*3

         queue_ size: 1000 

    

2.確定分片(shard)的數量和副本(replica)的數量  ElasticSearch在創建索引數據時,最好指定相關的shards數量和replicas,否則會使用服務器中的默認配置參數shards=5,replicas=1。  因爲這兩個屬性的設置直接影響集羣中索引和搜索操作的執行。假設你有足夠的機器來持有碎片和副本,那麼可以按如下規則設置這兩個值:

1) 擁有更多的碎片可以提升索引執行能力,並允許通過機器分發一個大型的索引

2) 擁有更多的副本能夠提升搜索執行能力以及集羣能力。對於一個索引來說,number_of_shards只能設置一次,而number_of_replicas可以使用索引更新設置API在任何時候被增加或者減少。這兩個配置參數在配置文件的配置如下:  

index.number_of_shards: 5(第一次分片的數值)  

index.number_of_replicas: 1(可變)     

 

3.elasticsearch.yml log日誌其具體配置如下:  

 index.search.slowlog.level: INFO

 index.search.slowlog.threshold.query.warn: 5s

 index.search.slowlog.threshold.query.info: 2s

 index.search.slowlog.threshold.query.debug: 500s

 index.search.slowlog.threshold.query.trace: 500ms

 index.search.slowlog.threshold.fetch.warn: 5s

 index.search.slowlog.threshold.fetch.info: 2s

 index.search.slowlog.threshold.fetch.debug: 500ms

 index.search.slowlog.threshold.fetch.trace: 200ms

 


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