ELK 設(shè)置定時清理腳本清理索引
908
2025-04-04
elasticsearch 優(yōu)化(1)-集群腦裂問題
elasticsearch 優(yōu)化(2)
調(diào)大系統(tǒng)的“最大打開文件數(shù)”,建議32K甚至是64K
ulimit -a (查看)
ulimit -n 32000(設(shè)置)
ElasticSearch 優(yōu)化(3)
修改配置文件調(diào)整ES的JVM內(nèi)存大小
1)修改bin/elasticsearch.in.sh中ES_MIN_MEM和ES_MAX_MEM的大小,建議設(shè)置一樣大,避免頻繁的分配內(nèi)存。根據(jù)服務(wù)器內(nèi)存大小,一般分配60%左右(默認(rèn)256M)
2)內(nèi)存最大不要超過32G(詳細(xì)內(nèi)容見鏈接)
ElasticSearch 優(yōu)化(4)
設(shè)置memory_lock來鎖定進(jìn)程的物理內(nèi)存地址
避免內(nèi)存交換(swapped)來提高性能
修改文件
vi config/elasticsearch.yml
bootstrap.mlockall: true(2.4.0以前)
bootstrap.memory_lock: true(2.4.3之后)
ElasticSearch 優(yōu)化(5)
適當(dāng)增大分片,可以提升建立索引的能力,5-20個比較合適。
如果分片數(shù)過少或過多,都會導(dǎo)致檢索比較慢。
1)分片數(shù)過多,會導(dǎo)致檢索時打開文件較多,另外也會導(dǎo)致多臺服務(wù)器之間通訊,影響效率。
2)分片數(shù)過少會導(dǎo)至單個分片索引過大,所以檢索速度慢。
3)建議單個分片最多存儲20G左右的索引數(shù)據(jù),通用計算公式:分片數(shù)量=數(shù)據(jù)總量/20G
ElasticSearch 優(yōu)化(6)
合理設(shè)置副本數(shù)
1)增加副本,可以提升搜索的能力。
2)如果副本設(shè)置過多,會對服務(wù)器造成額外的壓力,因為主分片需要給所有副本同步數(shù)據(jù)。另外,副本過多也會占用磁盤空間。
3)一般建議最多設(shè)置2-3個即可
ElasticSearch 優(yōu)化(7)
定時對索引進(jìn)行合并優(yōu)化,segment越多,占用的segment memory越多,查詢的性能也越差。
1)索引量不大的情況下,可以將segment設(shè)置為1。
2)在es2.1.0以前調(diào)用_optimize接口,后期改為_forcemerge接口。
curl -XPOST 'http://master:9200/dwq2/_forcemerge?max_num_segments=1'
client.admin().indices().prepareForceMerge("dwq").setMaxNumSegments(1).get();
ElasticSearch 優(yōu)化(8)
針對不使用的index,建議close,減少內(nèi)存占用。
只要索引處于open狀態(tài),索引庫中的segement就會占用內(nèi)存,close之后就只會占用磁盤空間不會占用內(nèi)存。
curl -XPOST 'master:9200/dwq/_close'
ElasticSearch 優(yōu)化(9)
清除刪除文檔
在Lucene中刪除文檔,數(shù)據(jù)不會馬上在硬盤上清除,而是在lucene索引中產(chǎn)生一個.del的文件,然而在檢索過程中這部分?jǐn)?shù)據(jù)也會參與檢索,lucene在檢索過程會判斷是否刪除,如果已經(jīng)刪除,再過濾掉,這樣也會降低檢索效率。
可以執(zhí)行清除刪除文檔命令:
curl -XPOST 'http://master:9200/dwq/_optimize?only_expunge_deletes=true'
client.admin().indices().prepareOptimize("dwq").setOnlyExpungeDeletes(true).get();
ElasticSearch 優(yōu)化(10)
優(yōu)化ES數(shù)據(jù)導(dǎo)入:
1)如果在項目開始階段,需要批量入庫大量數(shù)據(jù),建議將副本數(shù)設(shè)置為0。因為es在索引數(shù)據(jù)的時候,如果副本已經(jīng)存在,數(shù)據(jù)會立即同步到副本中,這樣會對es增加壓力。
2)等到索引完成后,再恢復(fù)副本數(shù)即可,可以提高索引效率。
curl -XGET http://master:9200/dwq/_settings?pretty
curl -XPUT 'http://master:9200/dwq/_settings' -d
'{"index":{"number_of_replicas":0}}'
curl -XPUT 'http://master:9200/dwq/_settings' -d
'{"index":{"number_of_replicas":1}}'
ElasticSearch 優(yōu)化(11)
優(yōu)化ES索引_all
去掉mapping中_all域,Index中默認(rèn)會有_all的域,雖然會給查詢帶來方便,但是會增加索引時間和索引尺寸。
ElasticSearch 優(yōu)化(12)
優(yōu)化ES索引_source
_source字段我在們進(jìn)行檢索時相當(dāng)重要。
ES默認(rèn)檢索只會返回ID,如果在{"enabled":false}情況下,你需通過根據(jù)這個ID去去倒排索引中去取每個Field數(shù)據(jù),效率不高。
而反之,在{"enabled":true}的情況下可以根據(jù)ID直接檢索對應(yīng)source JSON的字段,不用去倒排索引去按Field取數(shù)據(jù)。
ElasticSearch 優(yōu)化(13)
ES優(yōu)化:
1)使用java代碼操作es集群,要保證本地es的版本和集群上es的版本保持一致。
2)保證集群中每個節(jié)點的JDK版本和es配置一致。
全文檢索 Elasticsearch 實時流計算服務(wù) CS
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。