Elasticsearch7.8.0版本优化——写入速度优化
目录
- 一、 写入速度优化的概述
- 二、如何写入速度优化
- 2.1、 批量数据提交
- 2.2、 优化存储设备
- 2.31、 合理使用合并
- 2.4、 减少 Refresh
- 2.5、 加大 Flush
- 2.6、 减少副本的数量
一、 写入速度优化的概述
-
ES 的默认配置,是综合了数据可靠性、写入速度、搜索实时性等因素。实使用时,我们需要根据公司要求,进行偏向性的优化。
-
针对于搜索性能要求不高,但是对写入要求较高的场景,我们需要尽可能的选择恰当写
优化策略。综合来说,可以考虑以下几个方面来提升写索引的性能:1、加大 Translog Flush ,目的是降低 Iops、Writeblock。
2、增加 Index Refresh 间隔,目的是减少 Segment Merge 的次数。
3、调整 Bulk 线程池和队列。
4、优化节点间的任务分布。
5、优化 Lucene 层的索引建立,目的是降低 CPU 及 IO。
二、如何写入速度优化
2.1、 批量数据提交
- ES 提供了 Bulk API 支持批量操作,当我们有大量的写任务时,可以使用 Bulk 来进行批量写入。
- 通用的策略如下:Bulk 默认设置批量提交的数据量不能超过 100M。数据条数一般是根据文档的大小和服务器性能而定的,但是单次批处理的数据大小应从 5MB~15MB 逐渐增加,当性能没有提升时,把这个数据量作为最大值。
2.2、 优化存储设备
- ES 是一种密集使用磁盘的应用,在段合并的时候会频繁操作磁盘,所以对磁盘要求较高,当磁盘速度提升之后,集群的整体性能会大幅度提高。
2.31、 合理使用合并
- Lucene 以段的形式存储数据。当有新的数据写入索引时,Lucene 就会自动创建一个新的段。
- 随着数据量的变化,段的数量会越来越多,消耗的多文件句柄数及 CPU 就越多,查询效率就会下降。
- 由于 Lucene 段合并的计算量庞大,会消耗大量的 I/O,所以 ES 默认采用较保守的策略,让后台定期进行段合并
2.4、 减少 Refresh
- Lucene 在新增数据时,采用了延迟写入的策略,默认情况下索引的 refresh_interval 为1 秒。
- Lucene 将待写入的数据先写到内存中,超过 1 秒(默认)时就会触发一次 Refresh,然后 Refresh 会把内存中的的数据刷新到操作系统的文件缓存系统中。
- 如果我们对搜索的实效性要求不高,可以将 Refresh 周期延长,例如 30 秒。这样还可以有效地减少段刷新次数,但这同时意味着需要消耗更多的 Heap 内存。
2.5、 加大 Flush
- Flush 的主要目的是把文件缓存系统中的段持久化到硬盘,当 Translog 的数据量达到512MB 或者 30 分钟时,会触发一次 Flush。
- index.translog.flush_threshold_size 参数的默认值是 512MB,我们进行修改。
- 增加参数值意味着文件缓存系统中可能需要存储更多的数据,所以我们需要为操作系统
的文件缓存系统留下足够的空间。
2.6、 减少副本的数量
- ES 为了保证集群的可用性,提供了 Replicas(副本)支持,然而每个副本也会执行分析、索引及可能的合并过程,所以 Replicas 的数量会严重影响写索引的效率。
- 当写索引时,需要把写入的数据都同步到副本节点,副本节点越多,写索引的效率就越慢。
- 如 果 我 们 需 要 大 批 量 进 行 写 入 操 作 , 可 以 先 禁 止 Replica 复 制 , 设 置index.number_of_replicas: 0 关闭副本。在写入完成后,Replica 修改回正常的状态。
相关文章:
Elasticsearch7.8.0版本优化——写入速度优化
目录一、 写入速度优化的概述二、如何写入速度优化2.1、 批量数据提交2.2、 优化存储设备2.31、 合理使用合并2.4、 减少 Refresh2.5、 加大 Flush2.6、 减少副本的数量一、 写入速度优化的概述 ES 的默认配置,是综合了数据可靠性、写入速度、搜索实时性等因素。实使…...
【Redis】Redis主从同步中数据同步原理
【Redis】Redis主从同步中数据同步原理 文章目录【Redis】Redis主从同步中数据同步原理1. 全量同步1.1 判断是否第一次数据同步2. 增量同步3. 优化Redis主从集群4. 总结1. 全量同步 主从第一次同步是全量同步。 数据同步包括以下三个阶段: 在从节点执行slaveof命令…...
Python基础—while循环
(1)while循环: 语法格式: while 条件: 执行语句1…… 执行语句2…… 适用条件:无限循环 死循环 while True:print(条件是真的!)代码实例: i 0 # 创建一个计数的变量 while i < 5: # Truepr…...
linux基础(管道符,检索,vim和vi编辑使用)
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放࿰…...
GAN | 代码简单实现生成对抗网络(GAN)(PyTorch)
2014年GAN发表,直到最近大火的AI生成全部有GAN的踪迹,快来简单实现它!!!GAN通过计算图和博弈论的创新组合,他们表明,如果有足够的建模能力,相互竞争的两个模型将能够通过普通的旧反向…...
华为面试题就这?00后卷王直接拿下30k华为offer......
先说一下我的情况,某211本计算机,之前在深圳那边做了大约半年多少儿编程老师,之后内部平调回长沙这边,回来之后发现有点难,这边可能是业绩难做,虚假承诺很厉害,要给那些家长虚假承诺去骗人家&am…...
html的常见标签使用
目录 1.vscode基础操作 2.html基础 语法 3.HTML文件的基本结构标签 4.注释标签 5.标题标签 6.段落标签:p 7.格式化标签 8.图片标签:img 绝对路径 相对路径 网络路径 alt属性 title属性 width/height属性 9.超链接标签:a 10.表格标签 11.列表标签 有序列表 无…...
STM32——毕设智能感应窗户
智能感应窗户 一、功能设计 以STM32F103芯片最小系统作为主控,实现自动监测、阈值设定功能和手动控制功能。 1、自动监测模式下: ① 采用温湿度传感器,实现采集当前环境的温度、湿度数值。 ② 采用光敏传感器,实现判断当前的环境…...
golang archive/tar库的学习
archive/tar 是 Golang 标准库中用于读取和写入 tar 归档文件的包。tar 是一种常见的文件压缩格式,它可以将多个文件和目录打包成单个文件,可以用于文件备份、传输等场景。 以下是一些学习 archive/tar 包的建议: 了解 tar 文件格式。在学习…...
MongoDB 详细教程,这一篇就够啦
文章目录1. 简介2. 特点3. 应用场景4. 安装(docker)5. 核心概念5.1 库5.2 集合5.3 文档6. 基本操作6.1 库6.1.1 增6.1.2 删6.1.3 改6.1.4 查6.2 集合6.2.1 增6.2.2 删6.2.3 改6.2.4 查6.3. 文档6.3.1 增6.3.2 删6.3.3 改6.3.4 查1. 语法2. 对比语法3. AN…...
python为什么慢
解释性 python是动态类型解释性语言,不管使用哪种解释器 因为“解释性语言”这个概念更多地是指代码的执行方式,而不是编译方式。在解释性语言中,代码在执行时会一行一行地解释并执行,而不是预先编译为机器语言。而即使使用了PyP…...
Android kotlin 组件间通讯 - LiveEventBus 及测试(更新中)
<<返回总目录 文章目录 一、LiveEventBus是什么二、测试一、LiveEventBus是什么 LiveEventBus是Android中组件间传递消息,支持AndroidX,Event:事件,Bus:总线 范围全覆盖的消息总线解决方案 进程内消息发送App内,跨进程消息发送App之间的消息发送更多特性支持 免配…...
linux服务器时间同步
Linux服务器时间同步 需求:两台以上服务器之间的时间同步,以其中一台服务器为时间源,其余服务器同步这台时间源服务器的时间 其中,时间源服务器需要有访问外网权限,不然时间源服务器无法同互联网同步最新的时间&#…...
扒系统CR8记录
目录 终极改造目标 过程记录 参考 为了将一套在线安装的系统,在不了解其架构、各模块细节的基础上,进行扒弄清楚,作以下记录。 终极改造目标 最终的目标,就是只通过CreMedia8_20230207.tar.gz解压 install 就把业务包安装了&…...
面试题(基础篇)
1、你是怎样理解OOP面向对象的面向对象是利于语言对现实事物进行抽象。面向对象具有以下特征:(1)继承:继承是从已有类得到继承信息创建新类的过程(2)封装:通常认为封装是把数据和操作数据的方法…...
如何利用ReconPal将自然语言处理技术应用于信息安全
关于ReconPal 网络侦查一直是网络安全研究以及渗透测试活动中最重要的阶段之一,而这一阶段看起来很容易,但往往需要很大的努力和很强的技术才能做好来。首先,我们需要使用正确的工具、正确的查询/语法以及正确的操作,并将所有信息…...
攻略 | 6步帮助中小微企业开拓东盟机电产品市场
如何帮助中小微外贸企业在东盟市场拓展机电产品一般贸易?随着全球化的发展,越来越多的中小微外贸企业开始涉足国际贸易。对于机电产品行业而言,东盟市场是一个非常重要的出口目的地。本文将为您介绍如何帮助中小微外贸企业在东盟市场拓展机电…...
Linux服务器磁盘分区、挂载、卸载及报错处理
整体操作是:先对磁盘进行格式化,格式化后挂载到需要的挂载点,最后添加分区启动表,以便下次系统启动时自动挂载。一、linux分区1、Linux来说wulun有几个分区,分给哪一目录使用,他归根结底只有一个根目录&…...
JavaScript基础语法入门
一. JS简介 JavaScript , 简称JS, JS最初只是为了进行前端页面开发, 但随这后来JS越来越火之后, JS就被赋予了更多的功能, 可以用来开发桌面程序, 手机App, 服务器端的程序等… JS是一种动态类型, 弱类型的脚本语言, 通过解释器运行, 主要在客户端和浏览器上运行, 比如Chrome…...
Linux基础命令-ln创建链接文件
文章目录 ln 命令介绍 命令格式 基本参数 参考实例 1) 创建文件的硬链接 2)创建文件的软链接 3)创建链接文件时,相同目标文件创建备份文件 命令总结 ln 命令介绍 先看下帮助文档中的含义 NAME ln - make links …...
Day21【元宇宙的实践构想07】—— 元宇宙与人工智能
💃🏼 本人简介:男 👶🏼 年龄:18 🤞 作者:那就叫我亮亮叭 📕 专栏:元宇宙 0.0 写在前面 “元宇宙”在2021年成为时髦的概念。元宇宙到底是什么?元宇…...
MySQL的InnoDB 三种行锁,SQL 语句加了哪些锁?
InnoDB 三种行锁: Record Lock(记录锁):锁住某一行记录 Gap Lock(间隙锁):锁住一段左开右开的区间 Next-key Lock(临键锁):锁住一段左开右闭的区间 哪些语句…...
Java培训:深入解读函数式接口
函数式编程是一种编程规范或一种编程思想,简单可以理解问将运算或实现过程看做是函数的计算。 Java8为了实现函数式编程,提出了3个重要的概念:Lambda表达式、方法引用、函数式接口。现在很多公司都在使用lambda表达式进行代码编写,…...
scratch潜水 电子学会图形化编程scratch等级考试一级真题和答案解析2022年12月
目录 scratch潜水 一、题目要求 1、准备工作 2、功能实现 二、案例分析...
DNS服务器部署的详细操作(图文版)
DNS服务器的部署 打开虚拟机后查看已经开放的端口,可以看到没有TCP53、UDP53,说明DNS服务端口没有打开 打开我的电脑—双击CD驱动器— 选择安装可选的Windows组件 选择网络服务—域名系统(DNS)— 点击下一步后会弹出如下弹…...
Compose – List / Detail: Basics实现
Compose – List / Detail: Basics实现 在androidx中有SlidingPanelLayout可以实现折叠屏的列表详情功能,但在Compose 中还没有官方的实现,那么下面我们用Compose做一些实现。 List / Detail 我们追求的基本行为是当 UI 具有项列表时。当用户点击列表…...
【Java】TCP网络编程(字节/符流)
文章目录概念TCP网络编程ServerSocketsocket使用区别和原理演示概念 TCP(传输控制协议)是一种面向连接的协议,用于在计算机网络中可靠地传输数据。TCP是Internet协议族中的一个核心协议,它在传输层提供可靠、有序、基于流的传输服…...
Linux之init.d、rc.d文件夹说明
备注:Ubuntu没有rc.d文件夹,原因看问题四 Linux的几个重要文件 rc.d,init.d文件夹的说明 今天在研究mysql的安装的时候,最后一步要创建一个软连接,使得mysql服务可以自启动,代码如下: ln -s…...
数据结构与算法(六):图结构
图是一种比线性表和树更复杂的数据结构,在图中,结点之间的关系是任意的,任意两个数据元素之间都可能相关。图是一种多对多的数据结构。 一、基本概念 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成&#x…...
Kubernetes07:Service
Kubernetes07:Service 1、service存在的意义 因为Pod的IP是不断变化的,所以需要注册service防止pod失联 1)为了防止Pod失联(服务发现) 2、定义一组Pod访问策略(负载均衡) 2、Pod和Service的关系-------通…...
建一个网站式系统/网络推广团队
php-fpm经常出现502解决方法更多请支持:www.Bkjia.com最近nginx经常502,解决502最好的办法就是重启php-fpm。手动去重启还是比较麻烦的事情,最好的就是扔到shell里去。vim restart-php-fpm.sh#!/bin/shSERVICEphp-fpm#if ps ax | grep -v gre…...
dreawever如何做本地网站/全网自媒体平台大全
栈的实现 实现一个栈,当务之急是决定存储数据的底层数据结构。这里采用的是数组。 我们的实现以定义 Stack 类的构造函数开始: function Stack() { this.dataStore []; this.top 0; this.push push; this.pop pop; this.peek peek; } 我们用数组 dataStore 保存栈内元素,构…...
新开传奇网站999新服网/网站搭建策略与方法
Proactor IO即,在读写IO完成后的通知。 Reactor模式,采用的非阻塞模式,但资源的读写操作仍然是同步的。 而Proactor模式在读写操作上是异步完成的,资源读写靠操作系统完成,而不是应用进程。操作系统完成读写后&#x…...
网站建设的目的及功能/在线一键生成网页
JackChen1024 关注 2017.03.12 14:06* 字数 11049 阅读 915评论 1喜欢 61Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。 Java NIO提供了与标准IO不同的IO…...
wordpress+发布文章慢/百度人工在线客服
今天给大家介绍如何在打印字符串时,规则对齐的两种方法,帮助大家在 shell 界面下输出漂亮的表格。第一种:使用 format先来看几个小 demo左对齐>>>"{:<10}".format("a")a >>>右对齐>>…...