乐趣区

关于java:elastic-stack-那些事9

集群调优

  1. elasticsearch.yml 中尽量只写必备参数其余通过 api 动静设置
  2. 参见文档 setup elasticsearch -》impotant elasticsearch configuration
  3. 随着 es 降级 很多网络流传的配置参数不再反对

根本参数设置

  1. cluster.name
  2. node.name
  3. node.master/node.data/node.ingest
  4. network.host 倡议指定的内网 ip 而不是偷懒设置为 0.0.0.0
  5. discovery.zen.ping.unicast.hosts 设置为集群其余节点地址
  6. discovery.zen.minimum_master_nodes 个别设定为 2
  7. path.data/path.log
  8. 除上述参数外再依据须要再减少其余动态配置参数
  9. 动静设定的参数有 transient 和 persistent 两种,前者再集群重启后会失落,后者不会,然而两种设置都会笼罩 elasticsearch.yml 的配置

jvm 内存

  1. 不要超过 31GB
  2. 余留一半给操作系统,用来做文件缓存
  3. 具体大小杜绝存储的数量来估算,为了性能,在内存和数据量间有一个倡议的比例

    1. 搜寻类我的项目的比例倡议在 1:16 以内
    2. 日志类我的项目比例在 1:48 – 1:96
  4. 假如总数据量大小为 1TB 3 个 node 1 正本 那么每个 node 存储的数量为 666GB,即 700GB,预留 20%,每个 node 存储 850GB 数据
  5. 如果是搜寻类,每个 node 内存大小为 850GB/16=53GB 大于 31GB 31*16=496 即每个 node 最多存储 496GB 数据 即起码须要 5 个 node
  6. 如果是日志类我的项目 每个 node 内存大小为 850GB/48=18GB 因而三个节点足够

写性能优化

指标是增大写的吞吐量 eps
客户端 多线程写
es 在高质量数据建模的前提下 次要在 refresh translog flush 之间做文章

  1. 升高 refresh 频率

    1. 减少 refresh_interval 升高实时性 增大每次 refresh 文档解决数,默认为 1s 设置为 -1 禁止主动 refresh
    2. 减少 index buffer size 参数为 indices.memory.index_buffer_size 动态参数 须要设定在 elasticsearch.yml 默认为 10%
  2. 升高 translog 写磁盘的频率 进步写效率 然而 升高了灾备的能力

    1. index.translog.durability 设置为 async index.translog.sync_interval 设置须要的大小 例如 120s 那么 translog 每 120s 写一次磁盘
    2. index.translog.flush_threshold_size 默认为 512mb 即 translog 超过大小时会触发一次 flush,那么调大该大小能够防止 flush 产生
  3. 设置正本数 0 写入结束后再减少
  4. 正当设计 shard 数 保障 shard 均匀分布在集群上 充分利用资源

    1. index.routing.allocation.total_shards_per_node 限定每个索引在每个 node 上可调配的总主副分片数
    2. 5 个 node 某索引有 10 个主分片 1 个正本 上述值该设置为多少?

      1. (10+10)/5=4
      2. 理论设置 5 个 搁置在 node 下线时 分片迁徙失败

读优化

  1. 高质量的数据建模是优化的根底
  2. 将须要通过 script 脚本动静计算的值进步筹备好作为字段存储在文档中
  3. 尽量使得数据模型贴近业务模型

设定 shard 数

  1. es 性能是线性扩大的 只须要测出一个 shard 的性能指标,而后依据需要算出须要几个 shard,例如单个 shard 写入 eps 是 10000 那么需要是 50000 则须要 5 个 shard
  2. 测试单个 shard

    1. 搭建与生产雷同配置的单节点集群
    2. 设定一个单分片零正本索引
    3. 写入理论生产数据进行测试 获取性能指标
    4. 针对数据进行查问申请 获取读性能指标
    5. 压测器具可选 esrally
  3. 搜寻场景 单个 shard 大小不要超过 15gb,如果是日志场景 单个 shard 不要超过 50GB shard 越大 查问性能越低
  4. 此时只有估算出索引总数居大小再除以单个 shard 大小也能够失去分片数
退出移动版