Nebula-Graph 查询数据失败

  • nebula 版本:3.0.2
  • 部署方式:分布式
  • 安装方式:使用 tar.gz 文件安装
  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘 SSD
    • CPU:32
      -内存:125g
  • 问题的具体描述
  • 通过查询 某顶点与其关联的点,使用match 语句查询,在数据量低于50 (节点)能快速返回响应结果,但是数据量大之后;得不到数据结果,直到响应超时。数据规模:

查询语句:

MATCH p=(v:`node_info`)<-[e:`ce8c8a5e0acff723980ee0d41b1ba66d`*0..10]-(v2) WHERE id(v) == "ce8c8a5e0acff723980ee0d41b1ba66d" RETURN v2 AS nodes,e AS links ;

造成的问题:

  • go应用程序中运行该语句的同时,会导致其他查询不可用
  • 在graph-stuido 中查询长时间没有响应,导致stuiod 页面崩溃
    这种情况下,应该如何解决这个问题

看着像因为跳数比较多,过滤条件比较少造成的慢查询。建议考虑改写查询语句,可考虑拆成多条较小的查询。

如果不需要路径信息的话,比如e AS links,可以改成用 GO 语句去实现,性能会快,资源占用会少。参考:

或者考虑减少跳数。

或者加一些过滤条件,减少数据量。

1 个赞

如果当前查询请求迟迟未响应,可能影响了其他查询;从这点看不能满足并发查询,这个有什么解决办法吗

  1. 慢查询本身是肯定需要被治理的,这个免不了;
  2. 可以使用最新的 3.4 版本的内存追踪的功能,防止进程被慢查询搞成 OOM 而停止服务;
  3. 对集群进行扩容,可以先尝试 scale-out graphd,再看情况决定是否需要 scale-out storaged。目前版本不支持自动负载均衡,可以在业务层做开发,将查询尽量打散到所有的 graphd 上。

在性能调优中,看到通过配置 storage 的 query_concurrently= true ,可以增加并发查询,但是在官方文档以及默认配置文件 nebula-storaged.conf.default 并没有看到这个配置项,是已经删除了?

没有删除,在配置文件中添加就可以

1 个赞

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