ELK日誌分析平臺——ElasticSearch性能優化

目錄

ES優化(1)-集羣腦裂優化設置 

ES優化(2)-增大系統打開文件數

ES優化(3)-合理設置JVM內存

ES優化(4)-鎖定物理內存

ES優化(5)-合理設置分片

ES優化(6) -合理設置副本數

ES優化(7)-合併索引

ES優化(8) -關閉索引

ES優化(9) -清除刪除文檔 

ES優化(10)-合理數據導入

ES優化(11) -設置索引_all 

ES優化(12) 設置索引_source

ES優化(13) -版本


ES優化(1)-集羣腦裂優化設置 

https://download.csdn.net/download/weixin_39855998/11587217

ES優化(2)-增大系統打開文件數

調大系統的“最大打開文件數”,建議32K甚至是64K。 ulimit -a (查看) ulimit -n 32000(設置) 

ES優化(3)-合理設置JVM內存

修改配置文件調整ES的JVM內存大小。  
修改jvm.options中-Xms和-Xmx的大小, 建議設置一樣大,避免頻繁的分配內存。根據服務器內存大小,一般 分配60%左右(默認1g)

ES優化(4)-鎖定物理內存

設置memory_lock來鎖定進程的物理內存地址 避免內存交換(swapped)來提高性能 
修改文件 vi config/elasticsearch.yml bootstrap.memory_lock: true

ES優化(5)-合理設置分片

適當增大分片,可以提升建立索引的能力,5-20個比較合適。如果分片數過少或過多,都會導致檢索比較慢。分片數過多,會導致檢索時打開文件較多,另外也會導致多臺服務 器之間通訊,影響效率。 
分片數過少會導至單個分片索引過大,所以檢索速度慢。 
建議單個分片最多存儲20G左右的索引數據,通用計算公式:分片 數量=數據總量/20G 
地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/indice s-create-index.html

ES優化(6) -合理設置副本數

增加副本,可以提升搜索的能力。 
如果副本設置過多,會對服務器造成額外的壓力,因爲主分片需要 給所有副本同步數據。另外,副本過多也會佔用磁盤空間。 
一般建議最多設置2-3個即可 
地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/indice s-create-index.html 

ES優化(7)-合併索引

定時對索引進行合併優化,segment越多,佔用的 segment memory越多,查詢的性能也越差。 
 1)索引量不大的情況下,可以將segment設置爲1。 
 2)在es2.1.0以前調用_optimize接口,後期改爲 _forcemerge接口。 curl -u elastic:123456 -XPOST 'http://master:9200/test/_forcemerge?max_num_segment s=1' 

ES優化(8) -關閉索引

針對不使用的index,建議close,減少內存佔用。 
 只要索引處於open狀態,索引庫中的segement就會佔用內 存,close之後就只會佔用磁盤空間不會佔用內存。 

curl -u elastic:123456 -XPOST 'master:9200/test/_close' 

ES優化(9) -清除刪除文檔 

在Lucene中刪除文檔,數據不會馬上在硬盤上清除,而是 在lucene索引中產生一個.del的文件,然而在檢索過程中這 部分數據也會參與檢索,lucene在檢索過程會判斷是否刪 除,如果已經刪除,再過濾掉,這樣也會降低檢索效率。 
可以執行清除刪除文檔命令: curl -u elastic:123456 -XPOST 'http://master:9200/test/_optimize?only_expunge_deletes =true' 

ES優化(10)-合理數據導入

如果在項目開始階段,需要批量入庫大量數據,建議將副本數設置 爲0。因爲es在索引數據的時候,如果副本已經存在,數據會立即同步 到副本中,這樣會對es增加壓力。等到索引完成後,再恢復副本數即可,可以提高索引效率。 
curl -XGET http://master:9200/test/_settings?pretty 
 
curl -H "Content-Type:application/json"  -XPUT 'http://master:9200/test/_settings' -d '{"index":{"number_of_replicas":0}}' 
 
curl -H "Content-Type:application/json"  -XPUT 'http://master:9200/test/_settings' -d '{"index":{"number_of_replicas":1}}' 

ES優化(11) -設置索引_all 

去掉mapping中_all域,Index中默認會有_all的域,雖然會 給查詢帶來方便,但是會增加索引時間和索引尺寸。 
 
地址: https://www.elastic.co/guide/en/elasticsearch/reference/cu rrent/mapping-all-field.html 

ES優化(12) 設置索引_source

_source字段我在們進行檢索時相當重要。 
 
ES默認檢索只會返回ID,如果在{"enabled":false}情況下, 你需通過根據這個ID去去倒排索引中去取每個Field數據, 效率不高。而反之,在{"enabled":true}的情況下可以根據 ID直接檢索對應source JSON的字段,不用去倒排索引去 按Field取數據。 
 
地址: https://www.elastic.co/guide/en/elasticsearch/reference/cu rrent/mapping-source-field.html 

ES優化(13) -版本

使用Java代碼操作es集羣,要保證本地es的版本和集羣上 es的版本保持一致。 Ø 保證集羣中每個節點的JDK版本和es配置一致。 

 

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