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

Easysearch 容量规划建议

基于容量估算

主要问题:

  • 每天将索引多少原始数据(GB)?保留数据多少天?
  • 原始数据膨胀率
  • 您将强制执行多少个副本分片?
  • 您将为每个数据节点分配多少内存?
  • 您的内存:数据比例是多少?

原则

  • 保留 +15% 以保持在磁盘水位以下。
  • 保留 +5% 用于误差和后台活动的余量。
  • 保留相当于一个数据节点的资源来处理故障。

公式:

总数据量 GB = 原始数据 GB/天 * 保留天数 * 膨胀率 * (副本数 + 1)

总存储 GB = 总数据 GB * 1.15(包括磁盘 watermark threshold 和误差范围)

总数据节点数 = ROUNDUP(总存储 GB / (每个数据节点的内存 * 内存/数据比例)) + 1(用于故障转移)

举例:

假设 需要存储的源数据 50TB 大小

膨胀率 10% 副本数 1

每个节点 256G 内存

计算出:

总数据量 TB

= 50TB * (1 + 0.10) * (1 + 1)

= 110TB

总存储 TB

= 110TB * 1.15(考虑磁盘 watermark threshold 和误差范围)

= 126.5TB

如果有 256GB 的物理内存,128GB 会用于 JVM 堆,剩下的 128GB 将用于操作系统、文件缓存和其他系统进程。

按照常见的 1:30 的 RAM 到磁盘比例来计算,那么每个节点能处理的数据存储大约是:

256GB 内存 * 30 = 7680GB,大约等于 7.68TB

总数据节点数

= ROUNDUP(126.5TB / 7.68TB) + 1(用于故障转移)

= ROUNDUP(16.47) + 1

= 18

基于搜索吞吐量估算

在存储容量层面之外,还要考虑搜索响应时间和搜索吞吐量的目标,这些目标可能需要更多的内存和计算资源。

搜索响应时间受太多变量的影响,无法预测任何给定容量计划会如何影响它。但通过经验性测试搜索响应时间并估计预期的搜索吞吐量,我们可以估算出满足这些需求所需的集群资源。

主要问题:

  • 你每秒的最高搜索次数是多少?
  • 你的平均搜索响应时间(毫秒)是多少?
  • 你的数据节点上有多少个核心和每个核心有多少个线程

经验方法:

与其确定资源将如何影响搜索速度,不如将搜索速度视为一个常数,通过在计划的硬件上进行测量来处理。然后确定集群需要多少个核心来处理预期的搜索吞吐量峰值。最终目标是防止线程池队列增长速度超过它们被消耗的速度。如果计算资源不足,搜索请求有被丢弃的风险。

公式:

峰值线程数 = 向上取整(每秒的峰值搜索次数 * 平均搜索响应时间(毫秒) / 1000 毫秒)

线程池大小 = 向上取整((每个节点的物理核心数 * 每个核心的线程数 * 3 / 2) + 1)

总数据节点数 = 向上取整(峰值线程数 / 线程池大小)

举例:

假设每秒 2 万搜索请求,平均响应时间 50 毫秒,每个节点有 16 个线程数,计算需要多少节点

峰值线程数 = 20000 * 50 /1000 = 1000

线程池大小 = (16 * 1 * 3/2) + 1 = 25

总数据节点数 = 1000 / 25 = 40

大概需要 40 个数据节点来处理每秒 2 万的搜索请求,平均响应时间为 50 毫秒,每个节点有 16 个线程。这是一个粗略的估计,实际需求可能会因多种因素而有所不同。建议进行实际测试以确认这些数字。

Hot, Warm, Frozen

根据索引使用情况不同,通常分为种存储。
这是一种经济高效的方法,用于存储大量数据,同时优化了对较新数据的性能。在容量规划期间,每个层次必须独立进行规模确定,然后进行合并。

层面目标示例存储示例内存:存储比
Hot搜索为主SSD DAS/SAN (>200Gb/s)1:30
Warm存储为主HDD DAS/SAN (~100Gb/s)1:100
Frozen存档为主Cheapest DAS/SAN (<100Gb/s)1:500

实际情况要把搜索吞吐量估算和容量估算结合考虑。


http://www.kler.cn/a/105955.html

相关文章:

  • R语言-快速对多个变量取交集
  • 2.5D视觉——Aruco码定位检测
  • python读写excel等数据文件方法汇总
  • 删除k8s 或者docker运行失败的脚本
  • 构建SSH僵尸网络
  • Uniapp 引入 Android aar 包 和 Android 离线打包
  • OkHttp网络框架深入理解-SSL握手与加密
  • 雪糕冰淇淋经营配送小程序商城效果如何
  • 【Python机器学习】零基础掌握VotingClassifier集成学习
  • 在线设计数据库表用Itbuilder,极简易用真香!!!
  • 基于Jsp+Servlet+MySql的汉服网站的设计与实现-源码+毕业论文
  • 算法工程师-机器学习-数据科学家面试准备4-ML系统设计
  • git 版本管理
  • InterfaceWave 架构图
  • DSP 开发教程(0): 汇总
  • Python数据挖掘:入门、进阶与实用案例分析——基于非侵入式负荷检测与分解的电力数据挖掘
  • chrony参数及常用命令介绍
  • IDEA运行项目报错:Command line is too long的解决办法
  • 关于本地项目上传到gitee的详细流程
  • 自学(黑客技术)方法——网络安全
  • vantUI(Tabbar标签页)浏览器返回上一页的失效问题
  • “数聚瑞安·创新未来”中国·瑞安第四届创新创业大赛圆满举办!
  • 基于springboot实现校友社交平台管理系统项目【项目源码+论文说明】
  • 【无标题】读书笔记之《智能化社会:未来人们如何生活、相爱和思考》
  • 檢測項目簡體字
  • 【2023CANN训练营第二季】——通过一份入门级算子开发代码了解Ascend C算子开发流程