zoukankan      html  css  js  c++  java
  • elasticsearch 优化笔记

    综合来说,提升写入速度可以从以下几个方面入手:
    1、加大 translog flush ,目的是降低 iops,writeblock
    2、加大 index refresh间隔, 目的除了降低 io, 更重要的降低了 segment merge 频率
    3、调整 bulk 线程池和队列
    4、优化磁盘间的任务均匀情况,将 shard 尽量均匀分布到物理主机的各磁盘
    5、优化节点间的任务分布,将任务尽量均匀的发到各节点
    6、优化 lucene 层建立索引的过程,目的是降低 CPU 占用率及 IO

    一、translog flush 间隔调整
    从 es 2.x 开始, 默认设置下,translog 的持久化策略为:每个请求都flush.对应配置项为:
    index.translog.durability: request
    这是影响 es 写入速度的最大因素.但是只有这样,写操作才有可能是可靠的,原因参考写入流程.

    二、索引刷新间隔调整: refresh_interval
    默认情况下索引的refresh_interval为1秒,这意味着数据写1秒后就可以被搜索到,每次索引的 refresh 会产生一个新的 lucene 段,
    这会导致频繁的 segment merge 行为,如果你不需要这么高的搜索实时性,应该降低索引refresh 周期,如:index.refresh_interval: 120s

    三、segment merge
    segment merge 操作对系统 CPU 和 IO 占用都比较高,从es 2.0开始,merge 行为不再由 es 控制,而是转由 lucene 控制,因此以下配置已被删除:
    indices.store.throttle.type
    indices.store.throttle.max_bytes_per_sec
    index.store.throttle.type
    index.store.throttle.max_bytes_per_sec
    改为以下调整开关:
    index.merge.scheduler.max_thread_count
    index.merge.policy.*

    2搜索速度优化
    为文件系统cache预留足够的内存
    使用更快的硬件
    文档模型
    尽量避免join操作,嵌套会使得查询慢几倍,父子关系可能使查询慢数百倍

  • 相关阅读:
    oracle角色、权限和用户
    轻松解决oracle11g 空表不能exp导出的问题
    oracle 11g杀掉锁的sql
    oracle创建表空间
    js 读取xml文件
    oracle decode函数使用方
    oracle的触发器的实战使用
    oracle获取日期的数字格式,24小时制
    oracle判断表中的某个字段是否为数字trim+translate函数或regexp_like函数
    java String字符串操作 字符串加密等
  • 原文地址:https://www.cnblogs.com/merciless/p/13734007.html
Copyright © 2011-2022 走看看