Elasticsearch优化

硬盘策略

  • Elasticsearch 重度使用磁盘磁盘能处理的吞吐量越大,节点就越稳定;
    硬盘建议使用SSD,建议使用条带化 RAID 会提高磁盘 I/O,不建议使用镜像;

配置多磁盘存储,即配置索引数据、日志不同存储目录,elasticsearch-7.13.0/config/ elasticsearch.yml
在这里插入图片描述

分片策略

  • 每个分片占用的硬盘容量不超过 ES 的最大 JVM 的堆空间设置,一般设置不超过 32G,且分片数不超过节点数的 3 倍。主分片,副本、节点数之间满足:节点数 <=主分片数(副本数+1)*

如果节点数过少,远远小于分片数,很可能会导致一个节点上存在多个分片,一旦该节点故障,集群无法恢复

如果节点数过多,分片数也过多,每一个分片都只有很少的数据会导致很低的相关度

5m(时间可改)内瞬时中断节点重接接入集群,节点会保持现有的分片数据,不会触发新的分片分配。

PUT /_all/_settings 
{
 "settings": {
 "index.unassigned.node_left.delayed_timeout": "5m" 
 } }

路由策略

shard = hash(routing) % number_of_primary_shards
routing 默认值是文档的 id,也可以采用自定义值

带 routing 查询,查询的时候,可以直接根据 routing 信息定位到某个分片或副本,不需要查询所有节点的分片和副本

不带 routing 查询,协调节点将查询请求分发到每个分片上,协调节点搜集到每个分片上查询结果,在将查询的结果进行排序,之后给用户返回结果

写入流程优化

在这里插入图片描述

  1. 加大 Translog Flush时间 ,目的是降低 IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数)、Writeblock(写入磁盘)。

    index.translog.flush_threshold_size
    参数的默认值是 512MB, 我们可以进行修改,
    同时也意味着文件缓存系统中可能需要存储更多的数据

  2. 增加 Refresh 间隔,目的是减少 Segment Merge 的次数。

    对搜索的实效性要求不高,可以将 Refresh 周期延长,同时也意味着消耗更多的Heap内存。 因为段合并的计算量大,消耗大量的 I/O

  3. 当写索引时,需要把写入的数据都同步到副本节点,副本节点越多,写索引的效率就越慢。

    我 们 需 要 大 批 量 写 入操 作 , 可 以 先 禁 止 Replica 复 制 , 设 置index.number_of_replicas: 0 关闭副本。在写入完成后,Replica 修改回正常的状态

内存设置

ES 默认安装后设置的内存是 1GB,可以对Heap内存 和 操作系统文件缓存重分配。建议最大分配内存不要超过50%,即Heap内存、操作系统文件缓存,各自容量不要超过物理内存50%

若一台电脑有64G物理内存,则每个节点的内存分配不要超过32G,jvm.option 文件配置如下:
-Xms 31g
-Xmx 31g

Xms 表示堆的初始大小,Xmx 表示可分配的最大内存
确保 Xmx 和 Xms 的大小是相同的,其目的是为了能够在 Java 垃圾回收机制清理完
堆区后不需要重新分隔计算堆区的大小而浪费资源,可以减轻伸缩堆大小带来的压力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值