内存占用一直很高

nebula 版本:v2.6.1
部署方式:分布式
安装方式:RPM
是否为线上版本:Y
硬件信息
6台机器
每台都是
磁盘 1T HDD
CPU、内存 16C 64G
问题的具体描述
现象:重启后,nebula-storage内存持续上涨,每台机器最后都稳定在内存占比95%左右。
操作:前期做过大数据量的导数操作(大概十几亿点,几十亿边),后查询论坛方法,都没有效果,最后手动执行compaction,重启服务后,最终稳定在95%,目前就2.6.1那个默认值问题还未尝试升级版本,看了下表结构,就只有一条边有默认值,感觉影响不会特别大。
nebula-storage配置:
–rocksdb_batch_size=4096
–rocksdb_block_cache=40480
–enable_partitioned_index_filter=true

想问下如何降低内存使用率,感觉有点太高了,经常触发告警。

enable_partitioned_index_filter为true,block cache 40G的情况下,内存使用率一直稳定在95%,说明block cache不够,从而使用了page cache。如果这种情况,2.6.1版本可能没什么办法。3.1.0之后的版本,可以disable_page_cache,限制rocksdb不使用page cache,只有block cache。但显然,40GB block cache在你们的workload下是不够的,因此会有大量IO访问磁盘,这时候HDD的访问会变成明显的瓶颈。

我看官方推荐配置是1/3,现在已经40G,已经是64G的2/3了,难道还得增加内存吗 :joy:,是因为我们的数据量太多了吗?那如何限制rocksdb加载到内存中的数据呢,让内存使用率保持在一定比例。我的理解block cache应该是限制内存加载上限把,那为啥使用的内存还会超过我们设置的40G呢?另外性能瓶颈暂时不在我们的考虑范围之内。

你们实际内存使用率是95%这就说明内存不够。你们导入的数据有多大呢?
rocksdb使用的内存除了block cache还有OS page cache。3.1.0之后的版本,可以disable_page_cache,限制rocksdb不使用page cache,只有block cache。

或者你在storaged.conf的rocksdb_block_based_table_options里加入"use_direct_reads":“true”

大概16亿点,40亿边。那目前看来只能先维持原样了,不然就得扩大内存或者降低性能了

假设每个边50B(基本上边上没有属性),40亿边,也200GB了。稍微深一点的查询很有可能全部扫到。确实需要更大的内存。

好的,谢谢

哈喽,如果问题解决了,可以勾选解决你问题的回复为解决方案哈,方便遇到相似问题的人快速找到答案~

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