美文网首页
elasticsearch 性能调优(三)

elasticsearch 性能调优(三)

作者: 饲养员壹号 | 来源:发表于2019-08-18 19:54 被阅读0次

    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 性能调优(三)

          本文链接:https://www.haomeiwen.com/subject/suddsctx.html