容量规划示例
下面给出一个简易的 Neo4j 工作负载容量规划示例,满足以下需求列表
要求
| 需求 | 值 |
|---|---|
总用户数 |
100‑200(最终用户,可能通过前端应用访问) |
每位用户每日访问次数(读/查询) |
5 |
节点数量 |
5‑7.5 亿 |
关系数量 |
10‑15 亿 |
每个节点的属性数量 |
最小 1,最大 50,平均 5 |
每个关系的属性数量 |
最小 0,最大 20,平均 2 |
平均请求时间 |
500 毫秒 |
峰值每秒查询数 |
200 次/秒 |
批量插入和更新的频率 |
每天 4‑5 次 |
批量大小假设为提供体量的 10% |
约 20 GB/天,500 万节点 |
增量体量的最大处理/摄取时间 |
1 小时 |
RR |
在美国 + 欧洲 AWS 区域 |
DR |
在美国的 2 个可用区部署 DR |
分析
1) 估算初始数据库大小约为 38 GB(见下表)——假设
-
索引占 20%
-
最大节点数与关系数以及每节点/每关系的平均属性数
Number |
字节/对象 |
空间(GB) |
属性小计 |
|
节点 |
75000000 |
15 |
1.048 |
|
关系 |
150000000 |
34 |
4.750 |
|
每节点属性数 |
5 |
41 |
14.319 |
|
每关系属性数 |
2 |
41 |
11.455 |
25.774 |
索引(百分比) |
20 |
6.314 |
||
总计 |
37.886 |
2) 假设每日加载 500 万节点(即 10%),并且我们需要为下一年额外 50% 的增长预留容量。
3) 因此估算每实例大约需要 100 GB 总内存 [5 GB(操作系统)+ 60 GB(数据 + 索引 + 50% 增长)+ 30 GB(堆)≈ 100 GB]
4) 最后,估算需要约 10 个 CPU 核心(或 20 个 vCPU 核心)以在 3 核 + 2 RR 的集群中满足 200 查询/秒、响应时间 500 ms 的峰值需求(见下文)。
-
每秒并发请求数 200 次/秒
-
工作负载/查询处理时间 (w = 0.50 秒)
-
CPU 负载系数 0.5(c = 0.5;即 CPU 平均忙碌 50%)
-
设计时考虑的实例失效数 F = 1
-
核心数 = r × w / c = 200 × 0.5 / 0.5 = 200
-
集群规模 = 3 核 + 2 RR
-
每台机器的核心数 = 200 / 5 = 40(或 80 个 vCPU 核心)
-
估算
-
集群配置(5 个实例)×(每实例 80 个 vCPU 核心,100 GB RAM)
-
此页面有帮助吗?