重构索引速度很慢,可以加速吗?

  • nebula 版本:2.5.1
  • 部署方式:分布式
  • 安装方式: RPM
  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘:SSD
    • CPU:16核128GB
  • 问题的具体描述
  • 相关的 meta / storage / graph info 日志信息(尽量使用文本形式方便检索)

使用importer导入30亿+数据后,新建索引,并重建索引,速度很慢。是否可以加速?

执行语句示例

CREATE TAG INDEX trace_index_1 on trace(name(64));
REBUILD TAG INDEX trace_index_1;

近4个小时,才构建完一个索引。

你好,作为参考,可以把导入时间和对应的节点数列一下嘛~

现在执行不了查看节点数量语句了,在queue中。。

数据是分两次导入的,这是最近一次导入的日志

2022/05/05 08:59:22 --- START OF NEBULA IMPORTER ---
2022/05/06 05:39:41 [INFO] statsmgr.go:61: Done(/data/import_file_save/trace_v_task_9_rank_8): Time(74419.07s), Finished(1451985537), Failed(0), Latency AVG(30363us), Batches Req AVG(30691us), Rows AVG(19510.93/s)
2022/05/06 05:39:42 Finish import data, consume time: 74419.57s
2022/05/06 05:39:43 --- END OF NEBULA IMPORTER ---

可以将queuea或running中的任务kill吗,不能执行别的命令了 :worried:

仅针对构建索引,应该是没什么优化。
可以尝试下不同的配置
–rebuild_index_part_rate_limit=
–rebuild_index_batch_size=
如果机器性能遇到瓶颈,你可以看下当前的内存/cpu/硬盘占用,找一下哪个影响比较大。

内存/cpu/硬盘/网络,这几个看过,负载挺正常的。
–rebuild_index_part_rate_limit=
–rebuild_index_batch_size=
这两个配置,使用的是默认值,怎么调可以提高一点效率呢?

这个一般默认值就是经验值,修改的话就是尝试一下,停任务就是stop job

剩下的任务执行了stop job,但现在查询会出现错误:java.net.SocketException: Broken pipe (Write failed)

先确认下进程是否还在运行。如果不在可以看下日志来找一下错误的原因,如果在的话,也看一下具体报错。

你好,检查了集群服务是正常的,nebula没看到有错误日志输出,但查询时提示这个错误

试过查询语句在console中执行是Ok的,为啥通过java客户端是报java.net.SocketException: Broken pipe (Write failed)呢

检查下版本是否匹配呢?

版本是匹配的,重启应用好了。构建索引还是有问题,存在某个节点成功其他节点失败的问题。
这种失败的情况,该怎么处理,继续构建索引吗

你方便查看一下日志吗?可以贴一下,看看发生什么错误导致构建失败。

E0426 06:21:49.165102 25801 RaftPart.cpp:1118] [Port: 9780, Space: 10, Part: 1] Receive response about askForVote from "IP":9780, error code is E_TERM_OUT_OF_DATE
E0509 08:00:15.467100 25738 Part.cpp:467] [Port: 9780, Space: 10, Part: 7] Consensus error -7

E0512 21:12:04.927781 25840 AdminTaskManager.cpp:114] job 51, genSubTask failed, err=E_REBUILD_INDEX_FAILED
E0512 22:09:41.700201 25840 RebuildIndexTask.cpp:52] This space is building index
E0512 22:09:41.700218 25840 AdminTaskManager.cpp:114] job 52, genSubTask failed, err=E_REBUILD_INDEX_FAILED

看上去这个space正在构建索引,你是在一个graph space连续提交了多个任务吗?

1 个赞

我有试过单个build的,结果就是某个节点成功一个


这个刚刚执行的rebuild(服务器时间是0时区),有两个节点直接显示失败了

可以show jobs看一下所有任务的状态,我估计报错还是和上一个一样的。

这种错误怎么解决呢?

`E0513 03:24:00.182473 25840 AdminTaskManager.cpp:114] job 53, genSubTask failed, err=E_REBUILD_INDEX_FAILED

``