• ELASTIC SEARCH 性能调优


    ELASTICSEARCH 性能调优建议

    创建索引调优

    1.在创建索引的使用使用批量的方式导入到ES。

    2.使用多线程的方式导入数据库。

    3.增加默认刷新时间。

      默认的刷新时间是1秒钟,这样会产生太多小的SEGMENT,导致未来的合并压力,如果调整这个大小,会导致实时性的降低。

    默认1秒钟,就是创建在插入后一秒钟创建索引,如果设置30秒,那么每隔30秒将缓存的数据写一个内存的SEGMENT,让es可以搜索到。

    4.在初始导入的时候,禁止刷新和复制。

     如果在需要导入大量数据时,应该禁止刷新,将 index.refresh_interval 刷新间隔设置为-1,并且将复制分片数(index.number_of_replicas)设置为0。

    这是会有临时丢失分片数据的的风险,但是创建索引会更快。一旦初始导入完成,需要将index.refresh_interval 和 index.number_of_replicas 设置会原来的值。

    5.禁止swap

    大多数操作系统会将内存使用到文件系统缓存,会将应用程序未用到的内存交换出去。会导致jvm的堆内存交换到磁盘上。交换会导致性能问题。会导致内存垃圾

    回收延长。会导致集群节点响应时间变慢,或者从集群中断开。

    临时禁止 swap的方法

    swapoff -a

    永久禁止的方法

    编辑 /etc/fstab 文件,注释所有包含  swap的文件行。

    6.将内存分配给文件系统

    文件系统缓存被用来文件缓冲操作,应确保运行es的机器一般内存用于文件系统缓存。

    7.使用自动产生的D

    如果明确指定了文档ID,ES会去检查在相同的分片上是否有冲突的ID,这个会影响索引的性能。

    8.使用更快的硬件

    使用SSD硬盘,速度会超过机械硬盘。使用本地存储,不要使用远程存储或NFS,SMB等。

    9.索引缓冲大小

    ES默认的索引缓冲是内存大小的是系统 的10%,如果内存10G,那么1G是分配给ES的索引缓冲的。

    10.禁止 _field_names

    如果不用来查询,可以禁止 _field_names.

    查询调优

    1.给文件系统增加缓存

    需要给一半的内存给文件系统。

    2.使用更快的硬件。

    3.文档模式调整

    建模时:

    不要使用嵌套对象或者父子关系建模。

  • 相关阅读:
    内存泄漏检测工具VLD在VS2010中的使用举例
    boost::threadpool 调用类成员变量并传入参数 的方法
    boost之ThreadPool
    DllMain 用法
    分布式锁的几种实现方式
    利用cbmakegen导出Code::blocks的Makefile
    搜集C++实现的线程池
    微软开源rDSN分布式系统开发框架
    腾讯互娱开源分布式开发框架Pebble
    SpringBoot指定额外需要扫描的包
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/10004216.html
Copyright © 2020-2023  润新知