./bin/elasticsearch -Xmx10g -Xms10g?
1、內(nèi)存優(yōu)化在bin/elasticsearch.in.sh中進(jìn)行配置修改配置項(xiàng)為盡量大的內(nèi)存:ES_MIN_MEM=8gES_MAX_MEM=8g兩者最好改成一樣的,否則容易引發(fā)長(zhǎng)時(shí)間GC(stop-the-world)
elasticsearch默認(rèn)使用的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)點(diǎn)是減少stop-the-world在幾率,但是CPU占有率高。需要更優(yōu)化的性能,你可以參考http://www.Oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html
2、合理配置主節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)配置文件:conf/elasticsearch.yamlnode.master: truenode.data: true
1) 當(dāng)master為false,而data為true時(shí),會(huì)對(duì)該節(jié)點(diǎn)產(chǎn)生嚴(yán)重負(fù)荷;2) 當(dāng)master為true,而data為false時(shí),該節(jié)點(diǎn)作為一個(gè)協(xié)調(diào)者;3) 當(dāng)master為false,data也為false時(shí),該節(jié)點(diǎn)就變成了一個(gè)負(fù)載均衡器。
3、設(shè)置合理的刷新時(shí)間建立的索引,不會(huì)立馬查到,這是為什么elasticsearch為near-real-time的原因需要配置index.refresh_interval參數(shù),默認(rèn)是1s。你可以像http://zhaoyanblog.com/archives/299.html文件中一樣,調(diào)用接口配置也可以直接寫到conf/elasticsearch.yaml文件中index.refresh_interval:1s這樣所有新建的索引都使用這個(gè)刷新頻率。