欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Elasticsearch 集群的构建、优化与实践 - II.

最编程 2024-03-06 20:04:00
...

1、磁盘选择

  1. Elasticsearch重度使用磁盘,磁盘的效率越高,Elasticsearch的执行效率就越高。
  2. 优化磁盘:
    1)使用SSD(固态硬盘)。
    2)使用RAID0模式,即将连续的数据分散到多个硬盘存储,这样可以并行进行IO操作。代价是一块硬盘发生故障就会引发系统故障。
    3)不要使用远程挂载的存储。即在ES服务器中,而非ES服务器之外的存储。

2、分片策略

  1. 每个分片的底层都是一个Lucene索引,会消耗一定的系统资源。搜索请求需要命中索引中的所有分片,分片过多会降低搜索的性能。

  2. 分片原则:
    1)每个分片占用的磁盘容量不超过ES的JVM的最大堆空间设置(一般设置不超过32G)。
    2)分片数一般不超过节点数的三倍。
    3)推迟分片分配:节点中断后集群会重新分配分片。但默认集群会等待一分钟来查看节点是否重新加入。可以设置等待的时长,减少分配的次数。

    PUT /product/_settings
    {
      "settings":{
        "index.unassigned.node_left.delayed_timeout": "5m"
       }
    }
    
    
  1. 减少副本数量:进行写入操作时,需要把写入的数据都同步到副本中,副本越多写入的效率就越慢。进行大批量写入操作时可以先设置副本数为0,写入完成后再修改回正常的状态。

3、内存设置

  1. ES默认占用内存时4G,可以修改config/jvm.option文件设置ES的堆内存大小。
  2. 1)Xms表示堆内存的初始大小,Xmx表示可分配的最大内存。
    2)Xmx和Xms的大小设置为相同时,可以减轻伸缩堆大小带来的压力。
    3)Xmx和Xms不要超过物理内存的50%,因为ES内部的Lucene也要占据一部分物理内存。
    4)Xmx和Xms不要超过32G,由于JAVA语言的特性,堆内存超过32G会浪费大量系统资源,所以在内存足够的情况下,最终都会采用设置为31G。

推荐阅读