1受扳、內(nèi)存優(yōu)化
在bin/elasticsearch.in.sh中進行配置
修改配置項為盡量大的內(nèi)存:
ES_MIN_MEM=8g
ES_MAX_MEM=8g
兩者最好改成一樣的兔跌,否則容易引發(fā)長時間GC(stop-the-world)
elasticsearch默認使用的GC是CMS GC
如果你的內(nèi)存大小超過6G坟桅,CMS是不給力的,容易出現(xiàn)stop-the-world
建議使用G1 GC
注釋掉:
JAVA_OPTS=”$JAVA_OPTS -XX:+UseParNewGC”
JAVA_OPTS=”$JAVA_OPTS -XX:+UseConcMarkSweepGC”
JAVA_OPTS=”$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75″
JAVA_OPTS=”$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly”
修改為:
JAVA_OPTS=”$JAVA_OPTS -XX:+UseG1GC”
JAVA_OPTS=”$JAVA_OPTS -XX:MaxGCPauseMillis=200″
如果G1 GC優(yōu)點是減少stop-the-world在幾率赖舟,但是CPU占有率高宾抓。
需要更優(yōu)化的性能豫喧,你可以參考
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html
2紧显、合理配置主節(jié)點和數(shù)據(jù)節(jié)點
配置文件:conf/elasticsearch.yaml
node.master: true
node.data: true
1) 當master為false,而data為true時孵班,會對該節(jié)點產(chǎn)生嚴重負荷重父;
2) 當master為true,而data為false時,該節(jié)點作為一個協(xié)調(diào)者郭厌;
3) 當master為false,data也為false時折柠,該節(jié)點就變成了一個負載均衡器。
1前塔、節(jié)點職責單一华弓,各司其職
elasticSearch的配置文件中有2個參數(shù):node.master和node.data寂屏。這兩個參 數(shù)搭配使用時,能夠幫助提供服務(wù)器性能迁霎。
該node服務(wù)器只作為一個數(shù)據(jù)節(jié)點考廉,只用于存儲索引數(shù)據(jù)携御。使該node服務(wù)器功能 單一因痛,只用于數(shù)據(jù)存儲和數(shù)據(jù)查詢,降低其資源消耗率鸵膏。
該node服務(wù)器只作為一個主節(jié)點谭企,但不存儲任何索引數(shù)據(jù)。該node服務(wù)器將使用 自身空閑的資源非区,來協(xié)調(diào)各種創(chuàng)建索引請求或者查詢請求盹廷,講這些請求合理分發(fā)到相關(guān) 的node服務(wù)器上。
該node服務(wù)器即不會被選作主節(jié)點淆衷,也不會存儲任何索引數(shù)據(jù)祝拯。該服務(wù)器主要用 于查詢負載均衡她肯。在查詢的時候佳头,通常會涉及到從多個node服務(wù)器上查詢數(shù)據(jù),并請 求分發(fā)到多個指定的node服務(wù)器晴氨,并對各個node服務(wù)器返回的結(jié)果進行一個匯總處理康嘉, 最終返回給客戶端。
2瑞筐、關(guān)閉data節(jié)點服務(wù)器中的http功能
針對ElasticSearch集群中的所有數(shù)據(jù)節(jié)點凄鼻,不用開啟http服務(wù)。將其中的配置 參數(shù)這樣設(shè)置:http.enabled: false聚假,同時也不要安裝head, bigdesk, marvel等監(jiān)控 插件块蚌,這樣保證data節(jié)點服務(wù)器只需處理創(chuàng)建/更新/刪除/查詢索引數(shù)據(jù)等操作。
http功能可以在非數(shù)據(jù)節(jié)點服務(wù)器上開啟膘格,上述相關(guān)的監(jiān)控插件也安裝到這些服 務(wù)器上峭范,用于監(jiān)控ElasticSearch集群狀態(tài)等數(shù)據(jù)信息。
這樣做一來出于數(shù)據(jù)安全考慮瘪贱,二來出于服務(wù)性能考慮纱控。
3、一臺服務(wù)器上最好只部署一個Node
一臺物理服務(wù)器上可以啟動多個Node服務(wù)器節(jié)點(通過設(shè)置不同的啟動port),但一臺服務(wù)器上的CPU,內(nèi)存尔店,硬盤等資源畢竟有限,從服務(wù)器性能考慮该肴,不建議一臺服務(wù)器上啟動多個node節(jié)點匀哄。
3底扳、設(shè)置合理的刷新時間
建立的索引鹊汛,不會立馬查到,這是為什么elasticsearch為near-real-time的原因
需要配置index.refresh_interval參數(shù)至耻,默認是1s。
你可以像
http://zhaoyanblog.com/archives/299.html
文件中一樣疤苹,調(diào)用接口配置
也可以直接寫到conf/elasticsearch.yaml文件中
index.refresh_interval:1s
這樣所有新建的索引都使用這個刷新頻率。