nebula查询崩库

提问参考模版:

  • nebula 版本:3.6.2
  • 部署方式:云端
  • 安装方式:RPM
  • 是否上生产环境:N
  • 硬件信息
    • 内存 256G
  • 问题的具体描述
    在测试时一个查询语句不出结果,然后给数据库查崩盘了,cluster文件有80多个G占满磁盘
    怀疑语句:
match (n)-[r]-(m) return n,r,m limit 10

nebula-graph.ERROR


E20231114 09:04:25.706081 626434 QueryInstance.cpp:151] SemanticError: Space was not chosen., query: match (n:Person{idaas_open_id:"2fpFyd9AtbUD5GV5xFEZJ5"})-[r]-(m) return n,r,m
E20231114 09:04:29.808432 627697 FunctionUdfManager.cpp:41] UDF Folder doesn't Exist!
E20231114 09:04:33.161275 626501 OptimizerUtils.cpp:683] No valid index found
E20231114 09:08:58.032527 626418 QueryInstance.cpp:151] Used memory hits the high watermark(0.800000) of total system memory., query: match (n)-[r]-(m) return n,r,m limit 10
E20231114 09:09:22.591885 626494 QueryInstance.cpp:151] Used memory hits the high watermark(0.800000) of total system memory., query: match (n:Person)-[r]-(m) return n,r,m
E20231114 09:09:29.809278 627697 FunctionUdfManager.cpp:41] UDF Folder doesn't Exist!
E20231114 09:14:29.809440 627697 FunctionUdfManager.cpp:41] UDF Folder doesn't Exist!
E20231114 09:15:29.843290 626490 StorageClientBase-inl.h:143] There some RPC errors: (-2600)
E20231114 09:15:29.847934 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 5
E20231114 09:15:29.847970 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 4
E20231114 09:15:29.847978 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 3
E20231114 09:15:29.847986 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 1
E20231114 09:15:29.847991 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 2
E20231114 09:15:29.847997 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 6
E20231114 09:15:29.848013 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 7
E20231114 09:15:29.848021 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 8
E20231114 09:15:29.848028 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 9
E20231114 09:15:29.848034 626490 StorageAccessExecutor.h:47] Traverse failed, error E_GRAPH_MEMORY_EXCEEDED, part 10

第一次graph崩了后, memory_tracker_limit_ratio调到了0.99
后面再尝试使用该语句,还是不出结果,studio一直转圈圈

这个语句是随机读取 10 条边?感觉就是大量读取全盘数据捞出来的问题。你可以看下执行计划,应该是不涉及到如何计算下推的。

那如果想要读取,点边的信息,应该怎么办

studio 一直在转圈圈的话,应该是数据库这边还没数据过来。

MATCH ()<-[e]-() RETURN e LIMIT 20

Storage Error: RPC failure, probably timeout.

好像简单查个边也会崩
W20231114 11:16:48.370576 486771 MemoryUtils.cpp:133] Memory usage has hit the high watermark of system, available: 3.98824e+10 vs. total: 270487187456 in bytes.

ngql语句

MATCH ()<-[e]-() RETURN e LIMIT 20

显示Storage Error: RPC failure, probably timeout.

我大概没表达清楚, MATCH ()<-[e]-() RETURN e LIMIT 20match (n)-[r]-(m) return n,r,m limit 10 本质上没有任何区别,都是随机给你返回指定数据的边。也就是说,你可以用 explain 看下它们俩的执行话,应该是差不多的。没有指定任何 tag 和 vid 的情况下就是大量捞取数据,你数据多的话,全盘扫数据自然是会容易挂的。

可以读读这几篇文章:

你的边有多少?
社区版里有一些优化策略没有下推。如果你有多种点和边的话,建议你明确下点类型和边类型,这样会节省些内存

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