graph异常终止

  • nebula 版本:3.6.0
  • 部署方式:分布式
  • 安装方式:RPM
  • 是否上生产环境:Y
  • 硬件信息
    • 磁盘 SSD
    • CPU 64c
    • 内存 256g
  • graphd异常终止,产生core文件 ; 启动后写入一段时间又挂掉

第一次core日志

#0  0x0000000001215c0d in void std::vector<nebula::opt::OptRule const*, std::allocator<nebula::opt::OptRule const*> >::_M_realloc_insert<nebula::opt::OptRule const*&>(__gnu_cxx::__normal_iterator<nebula::opt::OptRule const**, std::vector<nebula::opt::OptRule const*, std::allocator<nebula::opt::OptRule const*> > >, nebula::opt::OptRule const*&) ()
#1  0x0000000001215d23 in nebula::opt::OptRule const*& std::vector<nebula::opt::OptRule const*, std::allocator<nebula::opt::OptRule const*> >::emplace_back<nebula::opt::OptRule const*&>(nebula::opt::OptRule const*&) ()
#2  0x000000000121586b in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#3  0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#4  0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#5  0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#6  0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#7  0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#8  0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#9  0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#10 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#11 0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#12 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#13 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#14 0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#15 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#16 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()

第二次core日志

#0  0x00000000026f844f in ?? ()
#1  0x0000000001d8b020 in operator new(unsigned long) ()
#2  0x0000000001215c12 in void std::vector<nebula::opt::OptRule const*, std::allocator<nebula::opt::OptRule const*> >::_M_realloc_insert<nebula::opt::OptRule const*&>(__gnu_cxx::__normal_iterator<nebula::opt::OptRule const**, std::vector<nebula::opt::OptRule const*, std::allocator<nebula::opt::OptRule const*> > >, nebula::opt::OptRule const*&) ()
#3  0x0000000001215d23 in nebula::opt::OptRule const*& std::vector<nebula::opt::OptRule const*, std::allocator<nebula::opt::OptRule const*> >::emplace_back<nebula::opt::OptRule const*&>(nebula::opt::OptRule const*&) ()
#4  0x0000000001214e79 in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#5  0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#6  0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#7  0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#8  0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#9  0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#10 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#11 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#12 0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#13 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#14 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#15 0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#16 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#17 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#18 0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#19 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#20 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#21 0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#22 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#23 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#24 0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#25 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#26 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()
#27 0x000000000121589e in nebula::opt::OptGroupNode::explore(nebula::opt::OptRule const*) ()
#28 0x0000000001214f6c in nebula::opt::OptGroup::explore(nebula::opt::OptRule const*) ()
#29 0x0000000001215661 in nebula::opt::OptGroup::exploreUntilMaxRound(nebula::opt::OptRule const*) ()

有 graph 的错误日志么?以及异常之前在做什么操作呢?

Program terminated with signal 11, Segmentation fault.
core文件里还有这个报错,搜了下,这是因为内存溢出吗

异常之前是正常的写入和查询,不过在异常节点会有个量级的增加,graph日志看报错像是match或insert语句过长导致的


论坛里看到这个解释,感觉应该是这个原因,因为写入和查询时会有大量数据拼接,导致执行语句很长,这个能从配置修复吗,不能因为执行语句太长就挂graphd呀

你是怎么拼接的?马上要发布的社区版里,有一个多 statement 的保护判断

插入就是 upsert vertex on a ‘111’ set name = ‘zhangsan’ ; 这样拼大概100个upsert语句
查询就是 match (n) where id(n) in [list] return n 这种,list中可能有几百个id要查询

如果是执行计划太长导致栈溢出,不考虑提前做判断中断吗?或者怎么可以调节这块使用的内存空间

马上发布的 3.8 版本会做保护

upsert几百个,实际语句长度可能几千行,但是不超过graph的配置:
–max_plan_depth=4096
–max_allowed_statements=4096

昨天又做了拆分,降低了upsert的数量,目前graphd正常了,但是怎么从数据库配置上避免这个风险呢

怎么实现的保护呢,方便说下嘛

目前是判断 statement 子句的数量,超过了会报错

是指一次执行的语句中 实际更新/插入/删除的语句数量吗
这个数量是固定的吗

这种方案的解决方式也就是拆分执行语句是吧,咱有可以类似调节 解析器这块内存 的方案吗
我观察过graphd挂掉时间的内存,是没有整体内存升高的,感觉是解析器这块使用内存不足?这块不能调整放大吗,还是会有别的问题

这个栈是系统的,也是可以调的

:sweat_smile:这块不能用graphd的内存吗

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