首页 > 其他分享 >Elasticsearch 集群规划- 单台机器核心数计算公式

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

时间:2023-03-20 10:33:34浏览次数:34  
标签:search 核心 单台 Elasticsearch 分片 计算公式 节点 pool size


在做集群规划的时候,到底需要给集群的每个节点多少个核心数?这个问题一直困扰了我很久。最近一段时间做千亿数据,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

search thread pool size

根据官网给出的公式,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

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

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

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

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

标签:search,核心,单台,Elasticsearch,分片,计算公式,节点,pool,size
From: https://blog.51cto.com/u_15812686/6132088

相关文章

  • ElasticSearch 实现分词全文检索 - 高亮查询
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......
  • 分布式搜索-elasticsearch
    学习黑马-SpringCloud微服务技术栈项目的分布式搜索章节自行整理的笔记,方便日后的重构。项目涉及技术知识点是按照集数依次整理,方便日后回来查找。考虑到不是固定的联......
  • elasticsearch添加拼音分词搜索
    分词器是es当中的一个组件,通俗来讲,就是将搜索的条件按照语义进行拆分,分词为多个词语,es会讲text格式的字段按照分词器的结果进行分词,并编排成倒排索引,正因为如此,es的查询速......
  • elasticsearch 安装常见报错
    目录elasticsearch安装常见报错报错信息问题解决系统安装场景下解决docker-compose安装场景下解决elasticsearch安装常见报错报错信息memorylockingrequestedfore......
  • ElasticSearch 实现分词全文检索 - filter查询
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......
  • Springboot 整合 elasticsearch 8.x版本冲突
    Springboot整合elasticsearch版本冲突Springboot整合elasticsearchmaven依赖应与elasticsearch服务端版本一致java.lang.IllegalStateException:Failedtoloa......
  • elasticsearch设置/修改密码
    elasticsearch设置密码1.进入到lelasticsearch目录下的config目录,找到elasticsearch.yml文件,在里面添加如下命令并重启:xpack.security.enabled:truexpack.license.sel......
  • elasticSearch配合go基本使用
    一。连接packagemodelimport("fmt""github.com/olivere/elastic/v7")varEsClient*elastic.Clientfuncinit(){//注意IP和端口EsClient,err=elastic.......
  • 求含税和不含税计算公式
    1、含税金额=不含税金额*(1+适用增值税税率);2、不含税金额=含税金额/(1+适用增值税税率)。示例     ......
  • springboot中配置elasticSearch
    1.1.1 在build.gradle中添加需要的jar包   我创建的gradle工程,对应的maven工程也是一样,添加对应的jar包即可//添加SpringDataElasticsearch的依赖comp......