elasticsearch 性能调优(三)

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.html

2、合理配置主节点和数据节点

配置文件:conf/elasticsearch.yaml

node.master: true

node.data: true

1) 当master为false,而data为true时,会对该节点产生严重负荷;

2) 当master为true,而data为false时,该节点作为一个协调者;

3) 当master为false,data也为false时,该节点就变成了一个负载均衡器。

1、节点职责单一,各司其职

elasticSearch的配置文件中有2个参数:node.master和node.data。这两个参 数搭配使用时,能够帮助提供服务器性能。


该node服务器只作为一个数据节点,只用于存储索引数据。使该node服务器功能 单一,只用于数据存储和数据查询,降低其资源消耗率。


该node服务器只作为一个主节点,但不存储任何索引数据。该node服务器将使用 自身空闲的资源,来协调各种创建索引请求或者查询请求,讲这些请求合理分发到相关 的node服务器上。


该node服务器即不会被选作主节点,也不会存储任何索引数据。该服务器主要用 于查询负载均衡。在查询的时候,通常会涉及到从多个node服务器上查询数据,并请 求分发到多个指定的node服务器,并对各个node服务器返回的结果进行一个汇总处理, 最终返回给客户端。

2、关闭data节点服务器中的http功能

针对ElasticSearch集群中的所有数据节点,不用开启http服务。将其中的配置 参数这样设置:http.enabled: false,同时也不要安装head, bigdesk, marvel等监控 插件,这样保证data节点服务器只需处理创建/更新/删除/查询索引数据等操作。

http功能可以在非数据节点服务器上开启,上述相关的监控插件也安装到这些服 务器上,用于监控ElasticSearch集群状态等数据信息。

这样做一来出于数据安全考虑,二来出于服务性能考虑。

3、一台服务器上最好只部署一个Node

一台物理服务器上可以启动多个Node服务器节点(通过设置不同的启动port),但一台服务器上的CPU,内存,硬盘等资源毕竟有限,从服务器性能考虑,不建议一台服务器上启动多个node节点。


3、设置合理的刷新时间

建立的索引,不会立马查到,这是为什么elasticsearch为near-real-time的原因

需要配置index.refresh_interval参数,默认是1s。

你可以像

http://zhaoyanblog.com/archives/299.html

文件中一样,调用接口配置

也可以直接写到conf/elasticsearch.yaml文件中

index.refresh_interval:1s

这样所有新建的索引都使用这个刷新频率。

你可能感兴趣的:(elasticsearch 性能调优(三))