NebulaGraph 查询报错

提问参考模版:

  • nebula 版本:
  • 部署方式 Docker
  • 硬件信息
    • 磁盘 云主机 SSD 8 vCPU 16G 内存
  • 问题的具体描述

    报错
    [ERROR (-8)]: Storage Error: part: 99, error: E_RPC_FAILURE(-3).

另外还有一个问题,通过nebula-importer导入数据时 占用磁盘空间较多,导入数据完成 ,磁盘空间释放近40G,不明白其中的原理,希望帮忙解答

  1. storage 在 lookup 的时候,服务挂了,看一下 storage 的日志,或者把日志目录挂出来看一下。
  2. 你导入前有没有关自动 compact?底层存储用的 rocksdb,批量写会有写放大,当导入完成,完成 compact 会释放部分磁盘空间

我今天重新执行了,storage日志里边我没有找到相关报错
graph日志有报错


你是用 docker-compose 部署的么?看一下 docker 是不是重启过 storage。
从日志上看,graph 在查询的时候, storage 连不上了。

可能的原因是,你 lookup 的时候,因为数据量太多,storage OOM 了(机器内存只有 16G),你加 where 条件试一下。

场景就是不知道数据是什么样的,通过lookup命令看一下,lookup命令怎么没有limit字句,类似SQL中的
select * from table_name limit 10;
另外一个问题,通过nebular graph studio的图探索指定vid可以查看点


通过控制台去查找这个点就没没有结果

不好意思 第二个问题是由于我没有rebuild 索引造成的

  1. 我们是有 limit 的,比如 lookup on Person | limit 10;
  2. 但是现在 lookup 的 limit 没有下推,所以是 storage 还是会全扫,然后在 graph limit,已经在安排需求了。

结论:
a. 如果在内存比较小的情况下,捞大量的数据,现在是有可能 storage OOM的,建议加个 where 条件, 或者加机器配置。
b. 等我们做完 limit 下推,那时候就是真正的在 storage 做 limit 了。

好的 谢谢