Elasticsearch优化

ES的优化即通过调整参数使得读写性能更快

1.磁盘选择

磁盘通常是服务器的瓶颈。Elasticsearch重度使用磁盘,磁盘的效率越高,Elasticsearch的执行效率就越高。这里有一些优化磁盘的技巧:

  1. 使用SSD(固态硬盘),它比机械磁盘优秀多了。
  2. 使用RAID0模式(将连续的数据分散到多个硬盘存储,这样可以并行进行IO操作),代价是一块硬盘发生故障就会引发系统故障。
  3. 不要使用远程挂载的存储。

2.分片策略

分片和副本数并不是越多越好。每个分片的底层都是一个Lucene索引,会消耗一定的系统资源。且搜索请求需要命中索引中的所有分片,分片数过多会降低搜索性能。索引的分片数需要架构师和技术人员对业务的增长有预先的判断,一般来说我们遵循以下原则:

  1. 每个分片占用的硬盘容量不超过ES的最大JVM的堆空间设置(一般设置不超过32G)。比如:如果索引的总容量在500G左右,那分片数量在16个左右即可。
  2. 分片数一般不超过节点数的3倍。比如:如果集群内有10个节点,则分片数不超过30个。
  3. 推迟分片分配:节点中断后集群会重新分配分片。但默认集群会等待一分钟来查看节点是否重新加入。我们可以设置等待的时长,减少重新分配的次数:
PUT /索引/_settings {   "settings":{     "index.unassianed.node_left.delayed_timeout":"5m"   } }
  1. 减少副本数量:进行写入操作时,需要把写入的数据都同步到副本,副本越多写入的效率就越慢。
    我们进行大批量进行写入操作时可以先设置副本数为0,写入完成后再修改回正常的状态。

3. 内存设置

ES默认占用内存是4GB,我们可以修改config/jvm.option设置ES的堆内存大小,Xms表示堆内存的初始大小,Xmx表示可分配的最大内存。

Elasticsearch优化
  1. Xmx和Xms的大小设置为相同的,可以减轻伸缩堆大小带来的压力。
  2. Xmx和Xms不要超过物理内存的50%,因为ES内部的Lucene也要占据一部分物理内存。
  3. Xmx和Xms不要超过 32GB,由于Java语言的特性,堆内存超过32G会浪费大量系统资源,所以在内存足够的情况下,最终我们都会采用设置为31G:
-Xms 31g -Xmx 31g

例如:在一台128GB内存的机器中,我们可以创建两个节点,每个节点分配31GB内存。

Original: https://blog.51cto.com/u_15704423/5434931
Author: wx62be9d88ce294
Title: Elasticsearch优化

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516886/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Tapdata 与优炫数据库完成产品兼容性互认证

    近日, Tapdata 实时数据平台(Tapdata Live Data Platform, Tapdata LDP)与优炫数据库管理系统(优炫数据库,UXDB)完成产品兼容互认证…

    大数据 2023年6月3日
    089
  • Docker的常用命令

    Docker关系图(简): 通常情况下,可以通过以下两种方式来查询想要使用的命令详情: 客户端输入 docker或者 docker –help就能查看简易版的命令行列表; 访问官…

    大数据 2023年5月28日
    077
  • 大白话带你认识JVM(转)

    摘自:https://www.cnblogs.com/max-home/p/12270183.html 前言 如果在文中用词或者理解方面出现问题,欢迎指出。此文旨在提及而不深究,但…

    大数据 2023年5月28日
    070
  • 【计算几何】线段相交

    问题描述:已知两条线段P1P2和Q1Q2,判断P1P2和Q1Q2是否相交,若相交,求出交点。 两条线段的位置关系可以分为三类:有重合部分、无重合部分但有交点、无交点。 算法的步骤如…

    大数据 2023年5月28日
    071
  • Java操作HDFS

    Java操作HDFS `java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs….

    大数据 2023年6月2日
    058
  • Scala 运算符

    一个运算符是一个符号,用于告诉编译器来执行指定的数学运算和逻辑运算。 Scala 含有丰富的内置运算符,包括以下几种类型: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符…

    大数据 2023年6月3日
    052
  • redis常见命令

    大数据 2023年11月14日
    038
  • Tapdata 开源项目基础教程:功能特性及实操演示

    自开源以来,Tapdata 吸引了越来越多开发者的关注。随着更多新鲜力量涌入社区,在和社区成员讨论共创的过程中,我们也意识到在基础文档之外,一个更”直观”、…

    大数据 2023年6月3日
    069
  • docker配置镜像加速器

    docker配置镜像加速器 原创 运维灬小兵2022-06-28 16:56:59博主文章分类:Docker ©著作权 文章标签 修改默认镜像源 docker 镜像源 配置文件 文…

    大数据 2023年5月26日
    067
  • sqlite 问题 database disk image is malformed 修复

    一.问题分析 此问题的提示也就是数据库文件损坏。如果在程序访问数据库期间拷贝是很容易出现该问题的,断开所有连接去拷贝在实际项目中有时候是不现实的,所以我们有时去做一下手动修复。 二…

    大数据 2023年11月10日
    057
  • Linux 磁盘类型和结构

    使用磁盘空间过程 分区:毛坯房 格式化:配置创建文件系统(装修) 挂载:把分区和文件系统进行组装 Linux一切皆文件:通过文件的方式来管理磁盘linux一切皆文件,所以磁盘也表现…

    大数据 2023年5月27日
    061
  • 慕课嵌入式系统(第七章.任务调度机制)

    慕课嵌入式系统(第七章.任务调度机制) 原创 mozhimen2022-06-23 23:28:36©著作权 文章标签 嵌入式 任务调度 任务管理 嵌入式系统 文章分类 Hadoo…

    大数据 2023年5月26日
    084
  • JVM类加载机制

    加载 验证 准备 解析 初始化 使用 卸载 加载二进制流的手段: 注意: 数组类由不通过类加载器创建,而由虚拟机直接创建。 为类变量分配内存并设置类变量的初始值,这些变量所使用的内…

    大数据 2023年5月28日
    064
  • 数据解析之json串解析

    回答1: MFC是Microsoft Foundation Classes的简称,是用于开发Windows应用程序的C++类库。要 ,可以使用MFC提供的一些功能。以下是一个简单的…

    大数据 2023年11月12日
    042
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球