zoukankan      html  css  js  c++  java
  • elasticsearch(六) 之 elasticsearch优化

    elasticsearch 优化

    从硬件上 :

    1. 使用SSD 硬盘,解决io导致的瓶颈。
    2. 增大内存 但不超过32G(单实例建议设置31G) ,elasticsearch 设置不超过机器内存的60%。
    3. 如果负载过高,增加cpu核心数。

    从软件上:

    1. 减少集群的副本数量, 一般集群有1-2两个副本即可,最多有3个副本。
    Elasticsearch 默认副本数量为 3 个,虽然这样会提高集群的可用性,增加搜索的并发数,但是同时也会影响写入索引的效率。
    
    在索引过程中,需要把更新的文档发到副本节点上,等副本节点生效后在进行返回结束。使用 Elasticsearch 做业务搜索的时候,建议副本数目还是设置为 3 个,但是像内部 ELK 日志系统、分布式跟踪系统中,完全可以将副本数目设置为 1 个。
    
    1. 根据业务量设定分片的数量(默认分片是为5个,分片是为了解决一个索引过大),多分片会导致io压力。

    2. 一个索引不要过大--》分索引(按日分,按周分)

    3. 减少索引的document里的字段,在跟需要查询的用户确认他们需要的字段,然后将一些不需要的字段清除。将filebeat的一些name字段,version字段删除。

    4. 针对不使用的index,进行close。我们需要的时候再进行open,可以节约内存和减轻系统的压力。

    curl -XPOST 127.0.0.1:9200/index_name/_close 
    curl -XPOST 127.0.0.1:9200/index_name/_open
    
    1. 增加 Refresh 时间间隔

      为了提高索引性能,Elasticsearch 在写入数据时候,采用延迟写入的策略,即数据先写到内存中,当超过默认 1 秒 (index.refresh_interval)会进行一次写入操作,就是将内存中 segment 数据刷新到操作系统中,此时我们才能将数据搜索出来,所以这就是为什么 Elasticsearch 提供的是近实时搜索功能,而不是实时搜索功能。

      当然像我们的内部系统对数据延迟要求不高的话,我们可以通过延长 refresh 时间间隔,可以有效的减少 segment 合并压力,提供索引速度。在做全链路跟踪的过程中,我们就将 index.refresh_interval 设置为 30s,减少 refresh 次数。

      同时,在进行全量索引时,可以将 refresh 次数临时关闭,即 index.refresh_interval 设置为 -1,数据导入成功后再打开到正常模式,比如 30s。
      如果我们的业务是要求的实时性比较高的,将index.refresh_interval 设置为 -1

    2. 不使用swap(虚拟内存)

      为什么要禁用?禁用swap

    3. 使用elastisearch 自动生成的id(_id)

      也就是我们的document的字段里面不要有_id字段,让该字段由elasticsearch自动生成。这样索引更快。

    从用户使用层

    1. 用户层:用户去搜索的时候需要避免返回比较大的结果集,通过设置默认的搜索时间段,来尽量避免返回较大的结果集。
    2. 用户进行搜索的时候尽量使用过滤器(Filter)这样可以从缩小搜索范围。比如我们在查询报错日志时,我们通过level字段筛选出ERROR等级,然后再进行搜索,这样对系统的压力可以减小,并且搜索速度更快。

    文档:
    官网:

    https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-indexing-speed.html

    优化方案:
    https://elasticsearch.cn/article/6202

    lucene
    https://elasticsearch.cn/article/6178

    腾讯云优化:https://cloud.tencent.com/developer/article/1156231

  • 相关阅读:
    20200209 ZooKeeper 3. Zookeeper内部原理
    20200209 ZooKeeper 2. Zookeeper本地模式安装
    20200209 Zookeeper 1. Zookeeper入门
    20200206 尚硅谷Docker【归档】
    20200206 Docker 8. 本地镜像发布到阿里云
    20200206 Docker 7. Docker常用安装
    20200206 Docker 6. DockerFile解析
    20200206 Docker 5. Docker容器数据卷
    20200206 Docker 4. Docker 镜像
    Combining STDP and Reward-Modulated STDP in Deep Convolutional Spiking Neural Networks for Digit Recognition
  • 原文地址:https://www.cnblogs.com/operationhome/p/10143257.html
Copyright © 2011-2022 走看看