當前位置:成語大全網 - 英語詞典 - ElasticSearch優化系列七:優化建議

ElasticSearch優化系列七:優化建議

a) JVM內存設置不要超過機器的壹半內存,並且不超過32G。(./bin/elasticsearch -Xmx10g -Xms10g或者修改./bin/elasticsearch.in.sh文件:

** 壹般分配主機1/4-1/2的內存**

設置每個線程的堆棧大小, ES單線程承載的數據量比較大

JAVA_OPTS="$JAVA_OPTS -Xss128m"

b) 修改swapping參數,內存不夠用時才進行swapping(vm.swappiness= 1)

c) 暫時不要修改GC方法

d)鎖定內存,不讓JVM寫入swapping,避免降低ES的 性能

bootstrap.mlockall: true

e)緩存類型設置為Soft Reference,只有當內存不夠時才會進行回收

index.cache.field.max_size: 50000 index.cache.field.expire: 10m index.cache.field.type: soft

4.權衡建索引的性能和檢索的時效性,修改以下參數。

5.倒排詞典的索引需要常駐內存,無法GC,需要監控data node上segment

memory增長趨勢。

定期對不再更新的索引做optimize (ES2.0以後更改為force merge api)。這Optimze的實質是對segment file強制做合並,可以節省大量的segment memory

6.根據機器數,磁盤數,索引大小等硬件環境,根據測試結果,設置最優的分片數和備份數,單個分片最好不超過10GB,定期刪除不用的索引,做好冷數據的遷移。

7.保守配置內存限制參數,盡量使用doc value存儲以減少內存消耗,查詢時限制size、from參數。

8.如果不使用_all字段最好關閉這個屬性,否則在創建索引和增大索引大小的時候會使用額外更多的CPU,如果妳不受限CPU計算能力可以選擇壓縮文檔的_source。這實際上就是整行日誌,所以開啟壓縮可以減小索引大小。

9.避免返回大量結果集的搜索與聚合。缺失需要大量拉取數據可以采用scan & scroll api來實現。

10.熟悉各類緩存作用,如field cache, filter cache, indexing cache, bulk queue等等,要設置合理的大小,並且要應該根據最壞的情況來看heap是否夠用。

11.必須結合實際應用場景,並對集群使用情況做持續的監控。