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