RaftPart buffer is full如何解决?

版本 1.1.0
在大批量导入数据时(spark客户端),频繁出现

E1202 14:31:44.599140 43673 Part.cpp:435] [Port: 44501, Space: 18, Part: 103] RaftPart buffer is full

以及

E1202 14:22:21.729084 43698 RaftPart.cpp:635] [Port: 44501, Space: 18, Part: 93]Cannot append logs, clean the buffer

调整了load的batch数量以及spark的executor的数量,未见明显好转
请问如何增大buffer?

1 个赞

因为写入速度太快,服务端的raftpart buffer满了。
建议你将spark的executor数量,spark的partition数,load的batch数量都设小点,降低下写入速度。

raftpart buffer 这个可以调大吗?
因为目前看到机器负责并不是很高,网络,磁盘都有空闲

你试下在 nebula的nebula-storaged.conf 中增加配置
–max_batch_size=1024

在 storaged 的config 中找不到 max_batch_size 的配置,。。。请问这个是在哪个版本上的配置

storaged的config文件中没有,要增加这个配置
–max_batch_size=1024

我想问一下,这个参数具体对应的是什么含义呢?比如1024 是1024byte 还是1024k?
还有 这个配置用命令行参数的方式–max_batch_size=1024行不行?

还有一个问题,就是我的replication 的 factor 为1 这种设置会导致这个问题吗?

不会,你可以show hosts,看下你的集群的情况吗?

你插入的是哪个space,还有你的space里面最大的parttions number是100,你的日志怎么会有103part的。

我是也遇见了同样的问题,所以在帖子下面问问,这是我的日志
E0111 02:16:47.884047 41 Part.cpp:435] [Port: 44501, Space: 35, Part: 8] RaftPart buffer is full

space 是contact

你确认下你导入的数据的点分布,是不是点和边都扎堆到 part 8上了,所以这个part的压力大,处理不过来。

有这个可能性,但是还有一个问题 是他一直没有恢复。

我们是根据hash来插入的,按照道理来讲短时间可能出现某一个partition 插入频率过快,但是从长时间统计来看不会出现某一个partition偏差过大

什么叫一直没恢复,是一直有这个打印吗?

日志会的报出这个错误
E0111 02:16:47.884047 41 Part.cpp:435] [Port: 44501, Space: 35, Part: 8] RaftPart buffer is full
E0111 02:16:47.893462 40 UpdateVertexProcessor.cpp:581] Fail to update vertex, spaceId: 35, partId: 8, vId: 4994420721561691907
E0111 02:16:47.893824 40 UpdateVertexProcessor.cpp:581] Fail to update vertex, spaceId: 35, partId: 8, vId: 4994420721561691907
E0111 02:16:47.893909 40 UpdateVertexProcessor.cpp:581] Fail to update vertex, spaceId: 35, partId: 8, vId: 4994420721561691907
E0111 02:16:47.894944 40 UpdateVertexProcessor.cpp:581] Fail to update vertex, spaceId: 35, partId: 8, vId: 4994420721561691907
E0111 02:16:47.895254 40 UpdateVertexProcessor.cpp:581] Fail to update vertex, spaceId: 35, partId: 8, vId: 4994420721561691907
E0111 02:16:47.895467 40 UpdateVertexProcessor.cpp:581] Fail to update vertex, spaceId: 35, partId: 8, vId: 4994420721561691907
E0111 02:16:47.901543 21 UpdateVertexProcessor.cpp:581] Fail to update vertex, spaceId: 35, partId: 2, vId: 696286582104341901
然后所有对partId=8的插入操作都会失败。

你先停掉插入的程序,然后手动执行下插入,插入一个点id为7的点,看能不能成功?假如成功了,那就是大部分操作的数据都在part8上面,你现在是在做update操作,update会有两次io,比较慢,不建议大压力同时操作一个part,update为什么这么频繁?

这是我手动插入的结果 ,线上实时写入已经停掉了
[ERROR (-8)]: Maybe vertex does not exist, part: 8, error code: -16!