Elasticsearch 集群规划- 单台机器核心数计算公式

news/2024/7/7 5:56:02 标签: elasticsearch, java, 大数据
在做集群规划的时候,到底需要给集群的每个节点多少个核心数?这个问题一直困扰了我很久。最近一段时间做千亿数据,PB存储量集群规划的时候,突然想明白了这件事,大致可以用一个公式来计算!
我觉得这是一个非常重要的问题,非常值得重视。其实所谓的集群规划,无非就是根据数据量评估出需要的es节点数,每个节点应该需要多少的CPU,多少的磁盘,多少内存。其中磁盘毋庸置疑,每个节点不要挂过多的数据,如果你想要保证性能,每个节点不要超过4T数据。多了以后堆的压力会比较大(根据实际的生产经验)。至于内存,内存基本上也就是每个节点31G,不超过32G,防止指针压缩失效而浪费堆内存。我测试的上限值是32.95G。至少留一半的内存给linux的 OS Cache。也就是每个机器的标配是64G内存,最大4T硬盘,有条件的数据控制到2.5T以内。磁盘有条件的可以选择SSD,且做raid0。唯独cpu核心数难计算,如果不熟悉es底层检索原理,很难算出来每个节点需要多少个核心数。
下边我把核心数的计算推导成一个公式!

ES 集群规划 核心数计算公式

在es中,查询是search线程池去处理请求的。请求到了底层会落到分片上,分片是分配线程资源的最小单元!所以我们应该先计算出来需要的查询线程数

search thread pool = (单次请求命中总分片数 / 节点数) * 每秒最大并发数 * 单个分片的响应时间(换算成秒)

这里以最小集群规模,3个节点来计算。

假如单次请求命中的总分片数为15,那么每个节点5个分片。每秒并发数为10,单个分片请求时间为 0.2s(200ms )

search thread pool size = 15 / 3 * 10 * 0.2 = 10

也就是说,想要满足以上的检索需求,则需要的最少search thread pool size 为10。在知道了需要查询线程数,然后就可以算CPU核心数了,注意这里我说的CPU核心数是指,逻辑核心数!

根据官网给出的公式,search thread pool size 的计算公式为:

CPU核心数 *3 / 2 +1
For count/search/suggest operations. Thread pool type is fixed_auto_queue_size with a size of int((# of available_processors * 3) / 2) + 1, and initial queue_size of 1000.
1000是请求队列的大小

所以我们需要的核心数为:

search thread pool size - 1)* 2 / 3

假如单次请求命中的总分片数为15,那么每个节点5个分片。每秒并发数为10,单个分片请求时间为 2s(2000ms )

那么想要满足以上的检索需求,则需要最少的核心数为100。显然,单台机器的CPU核心数不可能给那么多。即使CPU核心数给到,磁盘的IO也会受限。

理论上来说 单个节点CPU的核心数不超过32核心。在16核心 - 32核心之间。取决于磁盘的IO能力。另外也会受限于JVM的GC。所以实际情况,可以结合理论推导公式,结合压测情况,来给核心数。

做压测,做压测,一定要做压测。根据压测结果配合公式来确定最终需要的核心数!


http://www.niftyadmin.cn/n/133407.html

相关文章

论文阅读:Syntax-Aware Network for Handwritten Mathematical Expression Recognition

论文阅读:Syntax-Aware Network for Handwritten Mathematical Expression Recognition1 主要观点: 1、提出将语法信息纳入编码器-解码器网络的方法。使用一组语法规则,用于将每个表达式的LaTeX标记序列转换为解析树;用深度神经…

使用RabbitMQ发送短信

1、在项目中分别创建模块financial-core、financial-mq、financial-sms&#xff0c;如图&#xff1a; 模块构成 <modules><module>financial-common</module><module>financial-base</module><module>financial-core</module><mo…

制作VMware ESXi 6.X/7.X安装源安装

制作VMware ESXi 6.X/7.X安装源安装 简介 ESXi-Customizer-PS脚本是一个PowerShell脚本&#xff0c;可以极大地简化和自动化使用VMware PowerCLI Image Builder模块&#xff0c;从而方便快速地定制VMware ESXi 6.X/7.X操作系统镜像。 环境要求 Windows 10操作系统&#xff…

HTML URL

HTML 统一资源定位器 (Uniform Resource Locators) URL 是一个网页地址。 URL 可以由字母组成&#xff0c;如 "w3cschool.cn"&#xff0c;或互联网协议&#xff08;IP&#xff09;地址&#xff1a; 120.79.88.157。大多数人进入网站使用网站域名来访问&#xff0c;因…

正则表达式高阶技巧之环视(使用python实现)

正则之环视介绍用法环视的角度理解环视结构表达式python测试环视分类应用实例给数字字符串添加千分位去除中英文混排文本中的中文空白字符介绍 正则单词边界匹配(\b)就是类似于这样的&#xff1a;一边必须是单词字符&#xff0c;另一边不能是单词字符。从环视的角度考虑&#…

proteus中仿真arduino驱动模拟器件(蜂鸣器继电器电机)

模拟器件如蜂鸣器、继电器、直流电机等在arduino电路中&#xff0c;如果我们接在数字管脚上来驱动往往可能因为驱动电流不够而达不到预期效果&#xff0c;或者没有动作或者没有动静。这篇博文我们专门来讨论一下如何驱动他们。 文章目录一、典型电路1、蜂蜜器(1)蜂鸣器的种类:(…

SSH配置文件解析

1.修改端口号&#xff0c;设置登录输入密码等待过期时间&#xff0c;拒绝远程登录root&#xff0c;密码为空&#xff0c;密码登录&#xff0c; [rootzzp124 ~]# vim /etc/ssh/sshd_config [rootzzp124 ~]# systemctl restart sshd.service [rootzzp124 ~]# lsof -i :2…

C++ Primer阅读笔记--书包程序

1--该章节新知识点 ① 在 UNIX 和 Windows 系统中&#xff0c;执行完一个程序后&#xff0c;可以通过 echo 命令获得其返回值&#xff1b; # UNIX系统中&#xff0c;通过如下命令获得状态 echo $? ② 在标准库中&#xff0c;定义了两个输出流 ostream 对象&#xff1a;cerr…