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 |
实际情况要把搜索吞吐量估算和容量估算结合考虑。
关于 Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。 与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。
官网文档:https://www.infinilabs.com/docs/latest/easysearch
下载地址:https://www.infinilabs.com/download
Easysearch 容量规划建议的更多相关文章
- MongoDB的容量规划及硬件配置
mongo是基于内存的数据库,应尽量将工作集中的数据全部加载到内存中,即内存应大于工作集 本文译自Chad Tindel的英文博客: http://www.mongodb.com/blog/post/ ...
- Hbase集群类型|集群配置|服务器选型|磁盘容量规划
HBase和Hadoop的集群类型 1.单机模式 主要用于开发工作,一台机器上运行所有的守护进程,或者一台机器运行多个虚拟机.一般用于评估和测试. 2.小型集群 20台机器以内的集群,不同的机器运行不 ...
- Elasticsearch集群规模和容量规划的底层逻辑
转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484628&idx=1&sn=666e416ae ...
- 二 mysql容量规划,性能测试
何为基线- 当前运行状态记录.快照- 用于和未来的状态进行对比- 未来时刻产生关键事件后的新状态,作为下一个基线基线数据收集,关注哪些要点- 系统负载- MySQL运行状态- 相应的业务指标1.系统& ...
- MySQL容量规划之tcpcopy应用之道
官方文档:https://github.com/session-replay-tools/mysql-replay-module tcpcopy可以将正式环境上来自客户端的请求复制一份到测试端并复现, ...
- web容量规划
容量和性能 容量规划是基于当前性能判断系统需要什么及什么时候需要,它既是资本支出合理化证明过程也是一个技术变更; 性能调优是优化已存在的系统性能; 一般服务的升级步骤是:性能调优 -> ...
- oracle数据库规划建议
之前负责的项目有用到oracle的,oracle dba给过一些建议,自己整理了一下,写再这里做个备忘 数据库需求分析: 1. 创建的数据库名称为maildb,并且字符集为UTF8. 2. 提供可连接 ...
- 数据库分库分表容量划分建议参考阿里云DRDS原则
做分库分表的时候 一直想知道分库分表容量的最优规则有什么好的建议,以下是参考阿里云 DRDS 分库分表的规则,还是有一定的参考意义 .
- MySQL容量规划和性能测试
性能容量关键指标: 每秒tps,峰值tps 基础数据量,日均增长数据量 最大连接数 内存分配 IOPS 重点关注指标: 业务指标: 每秒并发用户请求.每秒订单数.用户请求响应时长 折算成性能指标: q ...
- elasticsearch容量规划
https://docs.bonsai.io/article/123-capacity-planning Capacity Planning Capacity planning is the proc ...
随机推荐
- 使用ISS服务器方式跑C#程序
使用ISS服务器方式跑C#程序 VS2010,临时接了一个C#系统的小系统,需要本地调试跑一下 但是老是在conn.open提示06413,简单来说就是连接不上数据库 尝试了很多方法,最后还是决定配置 ...
- 力扣258(java)-各位相加(简单)
题目: 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数.返回这个结果. 示例 1: 输入: num = 38输出: 2 解释: 各位相加的过程为:38 --> 3 + 8 ...
- HarmonyOS NEXT应用开发之多层嵌套类对象监听
介绍 本示例介绍使用@Observed装饰器和@ObjectLink装饰器来实现多层嵌套类对象属性变化的监听. 效果图预览 使用说明 加载完成后显示商品列表,点击刷新按钮可以刷新商品图片和价格. 实现 ...
- 技术揭秘:实时数仓Hologres如何支持超大规模部署与运维
简介:在本次评测中,Hologres是目前通过中国信通院大数据产品分布式分析型数据库大规模性能评测的规模最大的MPP数据仓库产品.通过该评测,证明了阿里云实时数仓Hologres能够作为数据仓库和大 ...
- KubeMeet|聊聊新锐开源项目与云原生新的价值聚焦点
简介: 10 月 16 日上海,OAM/KubeVela.OpenKruise.OCM 三大开源项目的社区负责人.核心贡献者和企业用户将齐聚 KubeMeet,和现场 100 名开发者聊聊新的技术环 ...
- [Gin] 运行模式检测和设置 (mode.go)
// 设置方式 gin.SetMode(gin.ReleaseMode) // 检测方式 if gin.Mode() == gin.DebugMode { } 更多相关信息,建议直接去看源代码. Re ...
- k8s问题解决
问题1: 问题描述:k8s中Terminating状态pod不能删除 [root@master ~]# kubectl get pods -n ms NAME READY STATUS RESTART ...
- 路由跳转报错:Uncaught (in promise) NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated",...
记录一个路由跳转的报错: 将换成
- Intel Pentium III 512MB内存 i815集显上安装Ubuntu Server 14.04
自己的御用奔腾III PC,接口齐全,准备安装Ubuntu Server 14.04 i386,继续发挥余热,物尽其用. 基本配置: CPU: Intel Pentium III 1000MHz, 2 ...
- Solution Set - 数论相关
绝了,六道题都差一步想出来或者差一个细节就开始看题解. CF906D Link&Submission. 要求 \(a^b\bmod p\),那就要求 \(b\bmod \varphi(p)\) ...