91Linux - java_opts
type: channel
link: https://91linux.org/tag/java_opts/
items: elasticsearch三个优化项

elasticsearch三个优化项
type: item
date: 2020-04-13T15:53:06+08:00
description: 1、内存优化在bin/elasticsearch.in.sh中进行配置修改配置项为尽量大的内存：ES_MIN_MEM=8g ES_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.html2、合理配置主节点和数据节点配置文件：conf/elasticsearch.yamlnode.master: true node.data: true 当master为false，而data为true时，会对该节点产生严重负荷当master为true，而data为false时，该节点作为一个协调者当master为false，data也为false时，该节点就变成了一个负载均衡器3、设置合理的刷新时间建立的索引，不会立马查到，这是为什么elasticsearch为near-real-time的原因需要配置index.refresh_interval参数，默认是1s。直接写到conf/elasticsearch.yaml文件中index.refresh_interval：1s 这样所有新建的索引都使用这个刷新频率。