cita 偶尔出块时间慢,预估大约10多分钟后才会出块

    1. 基本环境
      cita版本:
      Version: v0.24.1-dev
      镜像版本:cita/cita-run ubuntu-18.04-20190419 386183f731cf
      共识节点数:11个节点
      网络拓扑图:星型网状结构
      内网节点5个 (内网节点,5个节点互联)
      外网节点6个 (每个外网节点与内网中固定2个节点连接)
      出现的概率:
      偶现,频率高的时候,2-3天出现一次;
  • 2、通过 cita-network.log 日志并未发现节点之间连接有网络异常情况;
    2021-03-02 - 23:56:07 | cita_network::node_m - 412 | DEBUG - [NodeManager] The Address “10.60.38.72:4002” has been translated.
    2021-03-02 - 23:56:07 | cita_network::node_m - 412 | DEBUG - [NodeManager] The Address “10.60.38.73:4003” has been translated.
    2021-03-02 - 23:56:07 | cita_network::node_m - 333 | DEBUG - [NodeManager] Address V4(10.60.38.73:4003) has been connected on : SessionId(3).
    2021-03-02 - 23:56:07 | cita_network::node_m - 333 | DEBUG - [NodeManager] Address V4(10.60.38.72:4002) has been connected on : SessionId(1).
    2021-03-02 - 23:56:07 | cita_network::node_m - 393 | DEBUG - [NodeManager] connected_addrs info: {SessionId(1): TransformAddr { conn_addr: V4(10.60.38.72:4002), trans_addr: None }, SessionI
    d(3): TransformAddr { conn_addr: V4(10.60.38.73:4003), trans_addr: None }}
    2021-03-02 - 23:56:07 | cita_network::node_m - 397 | DEBUG - [NodeManager] known_addrs info: {V4(10.60.38.72:4002): NodeStatus { score: 100, session_id: Some(SessionId(1)), node_src: FromCo
    nfig }, V4(10.60.38.73:4003): NodeStatus { score: 100, session_id: Some(SessionId(3)), node_src: FromConfig }}
    2021-03-02 - 23:56:07 | cita_network::node_m - 398 | DEBUG - [NodeManager] Address in connected : {0xd342eb27ac98906ab7c908411cc42611e9176c61: SessionId(3), 0xe45a4e2c4badece85e8d5a23651b69
    8469778c9c: SessionId(1)}

  • 3、通过cita-bft.log 日志并未发现有ERROR的日志,就是共识花费的时间非常长;
    2021-03-03 - 00:02:25 | cita_bft::core::cita - 773 | INFO - commit_block Bft { h: 6341358, r: 9, s: 6 } consensus time 937.968412005s proposal 0x962c⋯77d2 locked block hash 0x962c⋯77d2
    2021-03-03 - 00:02:25 | cita_bft::core::cita - 848 | TRACE - change_state_step Bft { h: 6341358, r: 9, s: 6 } -> { h: 6341358, r: 9, s: 7, newflag: false }

通过这个日志,可以看出,共识花费了 937s;时间太长;

介于您的网络扩普情况必须先明确各个节点之间网络连通情况,cita 链默认3s出块,所以节点间如果存在秒级的连接断开就会影响出块,然后cita使用bft作为共识,11个节点仅可容错3个节点,也就是说4个节点下线,整链无法出块

通过cita-network.log日志(开启trace级别)可以反应是否存在秒级的连接断开情况?
但是从日志并未发现有断开异常;

那关于出块慢的原因有没有可能是由于共识也有超时机制,出块节点是外节点,获取全网节点投票时间超出了预设的阈值,从而导致发起新的投票,一直这样做了几次,从而导致出块慢。因为我看到日志里出块节点总是在搜集其他节点的投票数,但是不清楚为啥一直会这样,所以想要向您这边请教下。

共识是存在阈值的,以默认3s为例,共识的每个阶段会以3s作切割划分出多个时间段,一旦超时就会进入下一轮,同时超时的时间也会有一定的增长,直到时间长到收集到足够的投票才行
你可以打开 节点发现 功能
配置方式:https://docs.citahub.com/zh-CN/cita/configuration-guide/service-config#启动参数-5