当前位置: 首页 > news >正文

Elasticsearch基础优化

分片策略

分片和副本得设计为ES提供支付分布式和故障转移得特性,但不意味着分片和副本是可以无限分配,
而且索引得分片完成分配后由于索引得路由机制,不能重新修改分片数(副本数可以动态修改)

  • 一个分片得底层为一个lucene索引,会消耗一定文件句柄、内存以及CPU运转,当分片数越多资源消耗就会更多
  • 每个搜索请求都需要命中索引中得每个分片,如果分片处于不同节点还好,但如果处于相同节点上竞争使用相同资源就导致性能降低
  • 控制每个分片占用磁盘容量不超过ES得最大JVM堆空间设置(一般不超过32G),因此如果索引得总容量在500G左右,那么分片大小在16个左右即可
  • 考虑node数量,一般一个节点有时就是一台物理机,如果分片数量过多,大大超过节点数,可能会导致一个节点上存在多个分片,一旦该节点故障,即使保持1个以上得副本,同样有可能会导致数据丢失,一般设置分片数不超过节点数得3倍
  • 主分片,副本和节点最大数之间数量 节点数<=主分片数*(副本数+1)

推迟分片分配

对于节点瞬时中断得问题,默认情况,集群会等待一分钟来查看节点是否重新加入,如果节点再次期间重新加入,重新加入得节点会保持其现有分片得数据,不会触发新的分片分配,这样就可以减少ES在自动在平衡可用分片所带来的极大开销
通过修改参数delayed_timeout,延长在均衡时间,可全局设置也可以在索引级别修改

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

路由选择

当我们查询文档时,ES是如何知道一个文档应该存放在那个分片中,路由计算

#shard=hash(routing) % number_of_primary_shards

routing默认值是文档 id,也可以采用自定义值,比如用户id

  • 不带routing查询
    请求到达协调节点上,协调节点查询分发到所有分片上,协调节点搜集每个分片得查询结果,再将查询结果排序聚合,返回结果
  • 带routing查询
    查询可直接根据routing信息定位到某个分片查询,不需要查询所有分片,经过协调节点排序,比如自定义用户查询,如果routing设置为userid,就可以直接查询出数据,效率提升

写入速度

ES默认配置,综合数据可靠性、写入速度、搜索实时等因素,实际使用我们需要根据项目要求,进行偏向性优化。
针对搜索性能不高,但是写入有要求场景,需要尽可能得选择恰当写优化策略

  • 加大Translog Flush,降低磁盘 Iops、Writeblock
  • 增加Index Refresh 刷新间隔,减少Segment Merge次数(间隔短意味频繁将内存数据放入文件系统缓存中,文件系统缓存相应写入磁盘中,当磁盘文件数据多就会合并随之影响性能)
  • 调整Bulk线程池和队列(批量处理)
  • 优化节点间得任务分布
  • 优化Lucene层索引建立,降低CPU和IO

优化存储

ES是一种密集使用磁盘得应用,在段合并时候会频繁操作磁盘,所以对磁盘要求较高,当磁盘速度提升,集群整体性能大幅提高(固态硬盘)

减少Refresh次数

#Lucene是一个开源的全文索引与信息检索(IR)库,采用Java实现

Lucene在新增数据时,采用延迟写入策略,默认情况下索引得refresh_interval为1秒
Lucene将代写入得数据先写到内存中,超过默认1秒会触发一次refresh,然后refresh会把内存得数据刷新到操作系统得文件缓存系统中。

  • 如果对搜索得实效性不高,可以将refresh周期延长调整30秒等
  • 有效减少刷次次数,意味着需要消耗更多得Heap内存

加大Flush设置

#Translog是Elasticsearch的事务日志文件,它记录了所有对索引分片的事务操作(add/update/delete),每个分片对应一个Translog文件。
#Translog是用来恢复数据的。在Elasticsearch中,写入的索引并没有实时落盘到索引文件,而是先双写到内存和Translog文件。如果掉电,Elasticsearch重启后还可以把数据从日志文件中读回来。在flush的时候,Translog文件会被清空

Flush主要目的是把文件缓存系统中得段持久化到磁盘,当Translog得数据量达到512MB或者30分钟,会触发一次Flush

减少副本数量

ES为了保证集群得可用性,提供了Replicas支持,然后每个副本也会执行分析,索引及可能合并得过程,所以Replicas得数量严重影响写索引得效率。
当写索引时,需要把写入数据都同步到副本节点,副本节点越多,写索引得效率就越慢,如果有大批量进行写入操作,可以先禁止Replca副本复制,设置index.number_of_replicas:0关闭副本,再写入完成后,Replca修改回正常状态,提升效率

内存设置

ES在默认安装后设置得内存是1GB,对于任何一个业务来说,这个设置都太小了。config目录文件包含一个jvm.option文件,添加如下命令设置ES堆大小,Xms表示堆初始大小,Xmx表示可分配得最大内存。
一般来说这两数值配置保持相同,目的为了能够在java垃圾回收机制清理完堆分区后不需要重新分割计算堆区得大小而浪费资源,可以减轻伸缩堆大小带来得压力。

  • 不要超过物理内存得50%,Lucene设计目的是把底层得OS里得数据缓存到内存中。
    Lucene得段分别储存到单个文件中的,这些文件都是不会变化得,所以很利于缓存,同时操作系统也会吧这些文件缓存起来,以便更快得访问
    如果我们设置堆内存过大,Lucene可用得内存将减少,会影响降低Lucene得全文本查询性能
  • 堆内存大小最好不超过32GB,在java中,所有的对象都分配在堆上,然后有一个Klass pointer指针向它得类元数据
    假设有个机器有128GB内存,你可以创建2个节点,每节点内存分配不超过32GB,也就是不超过64GB内存给ES堆内存,剩下超过64GB得内存给Lucene

重要配置

参数参数值说明
cluster.nameES配置ES集群名称,默认值是ES,ES会自动发现在同一网段下集群名称相同得节点
node.namenode1集群中节点名,在同一集群中不能重复,节点名称一单设置不能在改变
node.mastertrue指定该节点是否有资格被选举为Master节点,默认为True,具体能否成为Master节点,需要通过选举产生
node.datatrue执行该节点是否存储索引数据,默认为True,数据的增、删、改、查都是在Data节点完成
index.number_of_shards1设置索引分片个数,默认是1。可以在创建索引时设置该值,具体设置多少根据数据量大小来定,如果数据量不大,保持默认1时效率最高
index.number_of_replicas1设置默认索引副本个数,默认为1,副本越多,集群可用性越好,但是写索引时需要同步得数据随之越多
transport.tcp.compressfalse设置在节点间传输时是否压缩,默认为False,不压缩
discovery.zen.minimum_master_nodes1设置在选举Master节点时需要参与最少候选主节点数,默认1,如果使用默认值,则当网络不稳定时有可能出现脑裂。合理数值为(master_eligible_nodes/2)+1,其中master_eligible_nodes表示集群中候选主节点数
descovery.zen.ping.timeout3s设置在集群中自动发现其他节点时ping连接超时时间,默认为3秒,在较差得网络环境需要设置大一点,防止因误判该节点存活状态而导致分片转移

相关文章:

Elasticsearch基础优化

分片策略 分片和副本得设计为ES提供支付分布式和故障转移得特性&#xff0c;但不意味着分片和副本是可以无限分配&#xff0c; 而且索引得分片完成分配后由于索引得路由机制&#xff0c;不能重新修改分片数&#xff08;副本数可以动态修改&#xff09; 一个分片得底层为一个l…...

【Amazon】通过直接连接的方式导入 KubeSphere集群至KubeSphere主容器平台

文章目录 一、设置主集群方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 二、在主集群中设置代理服务地址方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 三、登录控制台验证四、准备成员集群方式一&#xff1a;使用 Web 控制台…...

三数之和问题

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&…...

【JavaEE】多线程 (2) --线程安全

目录 1. 观察线程不安全 2. 线程安全的概念 3. 线程不安全的原因 4. 解决之前的线程不安全问题 5. synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使⽤⽰例 1. 观察线程不安全 package thread; public class ThreadDemo19 {p…...

关于点胶机那些事

总结一下点胶机技术要点&#xff1a; 1&#xff1a;不论多复杂的点胶机&#xff0c;简单点&#xff0c;可以简化为&#xff1a;1&#xff1a;运控 2&#xff1a;点胶&#xff0c;3&#xff1a;检测 运控的目的就是负责把针头移到面板对应的胶路上&#xff0c;点胶即就是排胶&…...

Python | CAP - 累积精度曲线分析案例

CAP通常被称为“累积精度曲线”&#xff0c;用于分类模型的性能评估。它有助于我们理解和总结分类模型的鲁棒性。为了直观地显示这一点&#xff0c;我们在图中绘制了三条不同的曲线&#xff1a; 一个随机的曲线&#xff08;random&#xff09;通过使用随机森林分类器获得的曲线…...

ubuntu22.04安装swagboot遇到的问题

一、基本情况 系统&#xff1a;u 22.04 python&#xff1a; 3.10 二、问题描述 swagboot官方提供的安装路径言简意赅:python3 -m pip install --user snagboot 当然安装python3和pip是基本常识&#xff0c;这里就不再赘述。 可是在安装的时候出现如下提示说 Failed buildin…...

python每日一题——8无重复字符的最长子串

题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串…...

【数据中台】开源项目(2)-Dbus数据总线

1 背景 企业中大量业务数据保存在各个业务系统数据库中&#xff0c;过去通常的同步数据的方法有很多种&#xff0c;比如&#xff1a; 各个数据使用方在业务低峰期各种抽取所需数据&#xff08;缺点是存在重复抽取而且数据不一致&#xff09; 由统一的数仓平台通过sqoop到各个…...

职场快速赢得信任

俗话说的好&#xff0c;有人的地方就有江湖。 国内不管是外企、私企、国企&#xff0c;职场环境都是变换莫测。 这里主要分享下怎么在职场中快速赢取信任。 1、找到让自己全面发展的方法 要知道&#xff0c;职场中话题是与他人交流的纽带&#xff0c;为了找到共同的话题&am…...

【SpringBoot3+Vue3】五【完】【实战篇】-前端(配合后端)

目录 一、环境准备 1、创建Vue工程 2、安装依赖 2.1 安装项目所需要的vue依赖 2.2 安装element-plus依赖 2.2.1 安装 2.2.2 项目导入element-plus 2.3 安装axios依赖 2.4 安装sass依赖 3、目录调整 3.1 删除部分默认目录下文件 3.1.1 src/components下自动生成的…...

[LaTex]arXiv投稿攻略——jpg/png转pdf

一、将图片复制进ppt&#xff0c;右键单击图片选择设置图片格式&#xff0c;获取图片高度和宽度 二、选择“设计-幻灯片大小-自定义幻灯片大小” 三、设置幻灯片大小为图片大小 四、 选择“最大化” 五、 检查幻灯片大小是否与图像大小一致 六、导出为PDF...

使用Pytorch从零开始构建GRU

门控循环单元 (GRU) 是 LSTM 的更新版本。让我们揭开这个网络的面纱并探索这两个兄弟姐妹之间的差异。 您听说过 GRU 吗&#xff1f;门控循环单元&#xff08;GRU&#xff09;是更流行的长短期记忆&#xff08;LSTM&#xff09;网络的弟弟&#xff0c;也是循环神经网络&#x…...

【尚跑】2023宝鸡马拉松安全完赛,顺利PB达成

1、赛事背景 千年宝地&#xff0c;一马当先&#xff01;10月15日7时30分&#xff0c;吉利银河2023宝鸡马拉松在宝鸡市行政中心广场鸣枪开跑。 不可忽视的是&#xff0c;这次赛事的卓越之处不仅在于规模和参与人数&#xff0c;还在于其精心的策划和细致入微的组织。为了确保每位…...

Mac nginx安装,通过源码安装教程

第一部分 安装参考网址&#xff1a; https://blog.csdn.net/a1004084857/article/details/128512612&#xff1b; 以上步骤执行完&#xff0c;进入找到sbin目录&#xff0c;查看下面是不是有nginx可执行文件&#xff0c;如果有在当前sbin下执行./nginx,就会发现NGINX已启动 第…...

TypeScript中的枚举是什么?

在TypeScript中&#xff0c;枚举&#xff08;Enum&#xff09;是一种用于定义一组有命名的常量值的数据类型。它们可以提供更具可读性和可维护性的代码。 枚举的作用是为一组相关的值提供一个易于理解和使用的命名空间。它们可以用于代表一系列可能的选项、状态或标志&#xf…...

进程并发-信号量经典例题-面包师问题

1 题目描述 面包师有很多面包和蛋糕&#xff0c;由N个销售人员销售。每个顾客进店后先取一个号&#xff0c;并且等着叫号。当一个销售人员空闲下来&#xff0c;就叫下一个号。试用信号量的P、V操作设计该问题的同步算法&#xff0c;给出所用共享变量&#xff08;如果需要&…...

c语言练习12周(11~15)

编写double fun(int a[],int n)函数&#xff0c;计算返回评分数组a中&#xff0c;n个评委打分&#xff0c;去掉一个最高分去掉一个最低分之后的平均分 题干编写double fun(int a[],int n)函数&#xff0c;计算返回评分数组a中&#xff0c;n个评委打分&#xff0c;去掉一…...

Java 实现视频转音频功能

在实际开发中,我们经常需要处理各种多媒体文件。本文将介绍如何使用 Java 语言实现将视频文件转换为音频文件的功能。我们将使用 FFmpeg 工具来进行视频转换操作,并通过 Java 的 ProcessBuilder 实现调用系统命令执行 FFmpeg 的功能。 准备工作 首先,我们需要确保系统中已安…...

可以在Playgrounds或Xcode Command Line Tool开始学习Swift

一、用Playgrounds 1. App Store搜索并安装Swift Playgrounds 2. 打开Playgrounds&#xff0c;点击 文件-新建图书。然后就可以编程了&#xff0c;如下&#xff1a; 二、用Xcode 1. 安装Xcode 2. 打开Xcode&#xff0c;选择Creat New Project 3. 选择macOS 4. 选择Comman…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...