nebula集群资源计算问题

提问参考模版:

  • nebula 版本:3.2.0
  • 部署方式:分布式
  • 安装方式:源码编译
  • 是否上生产环境:Y
  • 硬件信息
    • 磁盘 ssd
    • 32c 128g

想问一下nebula集群资源计算文档的内存这里 内存部分得出的结果是集群总和还是每台机器所需的内存呢?

想问一下文档里容量计算的内存部分得出的结果是集群的总共所需内存还是单台机器所需内存呢?

Nebula Graph 资源要求
用户可以预估一个 3 副本 Nebula Graph 集群所需的内存、硬盘空间和分区数量。

资源 单位 计算公式 说明
硬盘空间 Bytes 点和边的总数 * 属性的平均字节大小 * 6 * 120% 由于边存在存储放大现象,所以需要点和边的总数 * 属性的平均字节大小 * 6 的空间,详情请参见切边与存储放大。
内存 Bytes [点和边的总数 * 16 + RocksDB 实例数量 * (write_buffer_size * max_write_buffer_number + 块缓存大小)] * 120% 点和边的总数 * 16 是 BloomFilter 需要占用的内存空间,write_buffer_size和max_write_buffer_number是 RocksDB 内存相关参数,详情请参见 MemTable。块缓存大小请参见 Memory usage in RocksDB。
分区数量 - 集群硬盘数量 * disk_partition_num_multiplier disk_partition_num_multiplier是一个用于衡量硬盘性能的整数,取值范围 2~20。建议在计算 SSD 硬盘的分区数量时使用 20 做参数值,HDD 硬盘使用 2。

目前集群点边总数大概在400亿,6个storage,每台128g的内存,查询总容易把内存打满然后重启

@steam

这里不是说了集群么,:thinking: 你有啥困惑点么?

按照公式计算下来,目前内存是够的,但是目前集群上storage节点内存一直持续上升,并且查询会使个别机器内存到顶并重启,

:thinking: 什么操作都没做么?没有导入数据,也没有查询数据?

那么graph和storage的内存分配比例是怎么计算呢?

导入和查询都是一直有的

同一节点上可以通过memory tracker的memory_tracker_limit_ratio控制比例:Storage 服务配置 - NebulaGraph Database 手册

另外oom问题可以尝试把enable_partitioned_index_filter 改为true。Storage 服务配置 - NebulaGraph Database 手册

1 个赞

在这个点边5亿的case里1.5t内存还需要限制partition index filter才不oom,所以你这400亿点边128g不够用也能理解。可以参考这个帖子:nebula 内存占用

是单台128g,集群总共6台storage节点,3台graph,单storage 768g, 算上graph 1T, nebula对于内存容量需求这么大吗。如果真是内存小了,就直接提预算加机器了。

enable_partitioned_index_filter 这个目前已经是true了

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。