批次大小对ES写入性能影响初探

news2024/11/25 12:56:34

问题背景

ES使用bulk写入时每批次的大小对性能有什么影响?设置每批次多大为好?

一般来说,在Elasticsearch中,使用bulk API进行批量写入时,每批次的大小对性能有着显著的影响。具体来说,当批量请求的大小增加时,写入性能通常会提高,因为减少了网络往返时间和磁盘I/O次数。然而,如果批量请求过大,会导致节点上的内存压力增大,进而影响其他请求的性能,甚至可能导致节点崩溃。

实测方案与结果

我在虚拟机环境实测了7种不同批次的大小,从500到10000都有。

结果如下表:

索引消耗的时间与批次大小数据图示:

  • 最慢的10000条每批,吞吐量是18078/秒。
  • 最快是8000条每批,吞吐量是18218/秒。

这图看着很唬人,实际上设定不同的批次大小对写入性能的影响微乎其微,图中所示的数据索引时间单位是毫秒。

表中,程序运行时间单位是秒,即便是观察程序运行总时间,也都是几秒之差。因为波动太小,因此不具有实际调优意义,只能作为一个数据参考。

当然,对于生产环境也可以通过实验来确定最佳的批量大小。可以从较小的批量开始(例如5MB),然后逐渐增加批量大小,观察写入性能的变化。当性能开始下降时,说明批量大小已经过大,应该减小批量大小。通常,一个好的起点是将每批次的数据量设置在5MB到15MB之间。

补充测试

那么将批次大小分别设置为10万,和10呢?取两个较为极端的值。

  • 超大的10万级别:运行了149秒,变慢的趋势有所抬头!
  • 很小10级别:**运行了641秒,明显变慢!果然,批次太小的确是浪费资源!**不过一般也没有开发人员会设置成这个值。

批次大小设置为极小值10的时候,数据反映了另外一个事实,那就是批量写入比单条写入快了不止一倍!

最终所有测试索引都有100万条数据,数据存储空间大小也几乎一致:

结论

经过计算,上述7种单批次大小的100万数据吞吐量差异最大只有千分之7,可以说是完全没有差异了,极端值才会显著降低性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM(十一)| Claude 3:Anthropic发布最新超越GPT-4大模型

2024年3月4日,Anthropic发布最新多模态大模型:Claude 3系列,共有Haiku、Sonnet和Opus三个版本。 Opus在研究生水平专家推理、基础数学、本科水平专家知识、代码等10个维度,超过OpenAI的GPT-4。 Haiku模型更注重效率,能…

Figma 最新版下载:无需激活码,轻松安装!

从事设计工作,怎么能没有设计工具呢?我相信许多设计师也必须使用Figma这样的软件,真的可以让我们的设计工作更有效率,但我相信你也发现Figma属于外国软件,自然语言也是英语,直到现在没有中文版本&#xff0…

论文解读:Hints for Thin Deep Nets

这篇论文是在Hinton的那篇开山之作《Distilling the Knowledge in a Neural Network》为背景提出来的,主要思想是使用一个宽而浅的教师模型来训练一个窄而深的学生模型。之前的知识蒸馏方法主要是训练教师网络到更浅更宽的网络,没有充分利用深度。而该文…

IntelliJ IDEA 下载安装及配置使用教程

一、IDEA下载 1、打开游览器输入IntelliJ IDEA – the Leading Java and Kotlin IDE (jetbrains.com) 2、点击Download,进入IDEA下载界面 3、 有两个版本,一个是Ultimate 版本为旗舰版,需要付费,包括完整的功能,下载后…

element-ui配置

全局配置 完整引入 Element: import Vue from vue; import Element from element-ui; Vue.use(Element, { size: small, zIndex: 3000 });按需引入 Element Vue.prototype.$ELEMENT { size: small, zIndex: 3000 };如果是vue.config.js中配置了externals 使用按…

设计师成长之路1

. 学习的书籍: 1.写给大家看的设计书 2,设计师要懂心理学 3,平面设计完全手册 4.去日本上设计课2:配色设计原理

【C++】102.二叉树的层序遍历

题目描述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]示例 2&#xff1…

fatal: unable to access ‘***‘: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0解决方案

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 本文主要介绍在从 GitHub 上克隆 stable-diffusion-webui 项目时出现的 fatal: unable to access https://github.com/AUTOMATIC1111/stable-diffusion-webui.…

报错:module ‘collections‘ has no attribute ‘Iterable‘

使用python 高版本,在使用collections遇到报错:module ‘collections’ has no attribute ‘Iterable’ 查了资料 在python3.9 之后collections.Iterable被弃用了。 添加修改语句 collections.Iterable collections.abc.Iterable

【C++】String常用的函数总结

目录 一、string的构造函数方式: 二、常用的大小/容量相关操作: 三、string的常用修改操作: 四、string的遍历: 五、string的任意位置插入 / 删除: 六:补充: 一、string的构造函数方式&a…

Redis的三种集群模式(图解)

主从复制模式 一个主节点和多个从节点。主节点提供写入和读取功能,但是从属节点只提供读取功能。 主从复制的数据同步过程如下: (1)首先主节点启动,然后从属节点启动,从属节点会连接主节点并发送SYNC命令以…

SpringCloud Alibaba 学习

一:SpringCloud Alibaba介绍 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服 务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba&…

00X集——CAD vba 填充(hatch)及挖空

首先,画个椭圆,并填充,直接上代码: Sub 画椭圆填充() 2024年3月6日21:10:22 by qq443440204 Dim hat As AcadHatch 填充 Dim ell(0) As AcadEllipse 椭圆 Dim cent(0 To 2) As Double 椭圆中心点 Dim dd(0 To 2) As Double 椭圆长…

Android开发手册,android面试试题

前言 组件化是 保持整个 App 可持续地进行高质量开发的基础,近年来也是业界一直在积极探索和实践的方向,在深入理解组件化架构的过程中,将不断考验你的技术深度与广度;实践中我还参考了十几家技术团队的解决方案(例如…

智能设备 app 设计 —— 蓝蓝 UI 设计公司

今天给大家推荐是智能设备app设计,随着智能设备的逐渐普及随之操作app也越来越多,希望能给大家带来灵感 #日常灵感 #创意设计#UI提升#ui设计#app #设计案例分享|#设计 #产品设计#产品设计#设计灵感 #B端产品经理 #ui #产品 #美工 #交互 #产品经理 #开发 …

android实战视频教程,细数Android开发者的艰辛历程

缘起 随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有应用之间的互相调用等等问题,插件化技术应用而生。如果没有插件化技术,美…

64位Office API声明语句第116讲

跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高…

Qt插件之输入法插件的构建和使用(一)

文章目录 输入法概述输入法插件实现及调用输入键盘搭建定义样式自定义按钮实现自定义可拖动标签数字符号键盘候选显示控件滑动控件手绘输入控件输入法概述 常见的输入法有三种形式: 1.系统级输入法 2.普通程序输入法 3.程序自带的输入法 系统级输入法就是咱们通常意义上的输入…

普中51单片机学习(AD转换)

AD转换 分辨率 ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V1/(2^12 )2.4mV。 量化误差 …

C++ 哈希表OJ

目录 1、1. 两数之和 2、面试题 01.02. 判定是否互为字符重排 3、217. 存在重复元素 4、 219. 存在重复元素 II 5、49. 字母异位词分组 频繁查找某一个数的时候可以使用哈希表,哈希表可以使用容器,也可以使用数组模拟,当元素是字符串中的字…