sofa-jraft icon indicating copy to clipboard operation
sofa-jraft copied to clipboard

压力情况下出现领导者迁移

Open LinHuiG opened this issue 3 years ago • 7 comments

Your question

一个集群中创建多个raft实例(通过groupId区分),对其进行压力的时候,总是会出现领导者转移现象(Raft node receives higher term RequestVoteRequest),cpu负载不到70%,网络未拥堵,状态机内部使用了线程池异步处理。 是否因为业务队列满载导致领导者心跳失效?

thread_pool_metrics.log.2022-06-16_01-10-33.txt node_metrics.log.2022-06-16_01-10-33.txt node_describe.log.2022-06-16_01-10-33.txt

Your scenes

Describe your use scenes (why need this feature)

Your advice

Describe the advice or solution you'd like

Environment

  • SOFAJRaft version:1.3.10.bugfix_2
  • JVM version (e.g. java -version):1.8.
  • OS version (e.g. uname -a):centos7.8
  • Maven version:3.6.1
  • IDE version:

LinHuiG avatar Jun 16 '22 05:06 LinHuiG

这个是不是与#830 是同一个问题

LinHuiG avatar Jun 16 '22 05:06 LinHuiG

测试节点间网络速度大约在800Mb/s,观察到服务满载的时候占用了不到25Mb/s的带宽,同时,打压程序控制在途未完成任务量(未commit的日志数量)小于2000.

LinHuiG avatar Jun 16 '22 06:06 LinHuiG

日志里有这一条,看上去是选举计时器超时了的样子,业务日志的复制会导致心跳超时吗 2022-06-16 03:17:13.888 com.alipay.sofa.jraft.core.StateMachineAdapter [JRaft-FSMCaller-Disruptor-0]-[INFO] onStopFollowing: LeaderChangeContext [leaderId=10.10.184.171:9551, term=1, status=Status[ERAFTTIMEDOUT<10001>: Lost connection from leader 10.10.184.171:9551.]].

LinHuiG avatar Jun 16 '22 07:06 LinHuiG

通过调整超时时间后问题不再出现,推测应该是业务日志同步和心跳共用rpc时没有设置优先级导致了挤占,我理解心跳的优先级应该是要高于业务日志的。。。。

LinHuiG avatar Jun 16 '22 08:06 LinHuiG

应该是跟 https://github.com/sofastack/sofa-jraft/issues/830 一样的问题

killme2008 avatar Jun 16 '22 08:06 killme2008

这个问题可以通过一些限流来缓解, RafOptions 里的:

  • maxByteCountPerRpc 控制单个 RPC 请求大小
  • maxEntriesSize 单次发送 log 数量
  • maxBodySize 单次发送 log 字节数
  • maxAppendBufferSize 强制刷写磁盘最大字节数

这些参数来调节。

killme2008 avatar Jun 16 '22 15:06 killme2008

我后来看了一下,服务器的压力在磁盘上(磁盘占用率90+%),也就是日志落地的地方阻塞影响了心跳,限流的办法缓解效果并不是很好。

LinHuiG avatar Jun 28 '22 01:06 LinHuiG

hello,这个问题是否解决了,是不是可以在状态机apply的时候刷新一下候选定时器,这样也可以解决这个问题

j9kkk avatar Nov 19 '22 09:11 j9kkk

hello,这个问题解决了吗

LinHuiG avatar Mar 22 '23 07:03 LinHuiG

我们遇到了同样的问题,坐等后续回复

ReycoLi avatar Apr 11 '23 16:04 ReycoLi

我会尝试做个修复。

killme2008 avatar Apr 12 '23 01:04 killme2008

我会尝试做个修复。

请问一下这个修复将在1.3.14版本发布吗,有计划什么时候发吗

LinHuiG avatar Aug 03 '23 09:08 LinHuiG