match where id(v) return count() graph OOM

部署方式(分布式 / 单机 / Docker / DBaaS):k8s分布式部署
是否为线上版本:Y
硬件信息
磁盘使用的是:普通的HDD
存储:rock ceph
2CPU、16G内存
现存数据量:900M
执行语句:MATCH p=(v)<-[r:blood*{hop}]-(v2) WHERE id(v) IN [“{vid}”] RETURN count(distinct v2)
需求:循环执行count语句,查询某个点的所有上游和下游数量,循环查询过程中,
graph服务出现OOM,导致服务重启,什么问题造成的OOM,如何解决,因为数据量也不大,并发也不大。,报错日志如下:

这个设置了多少呢?

我的需求是,获取某个节点的所有上下游的数量,所以我这边写的是一个循环,每次hop值+1,循环掉nebula,直到没有。目前最高达到了24层。

这个场景建议使用subgraph,找到某个节点的子图,再去统计。用match的话会生成很多中间结果,比较耗内存。

1 个赞

我这边给graphd的内存是16G,这边总数据量才900多兆,并发也很小,如果是match产生的中介结果导致的OOM,感觉没有那么大吧。我这边如何定位是中间结果造成的OOM?

虽然原始数据只有900M,不过20多跳,中间会有很多数据重复访问的。你直接用subgraph吧,能满足你的需求。

2 个赞

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