Skip to content

High HTTP traffic nodes are disconnected from peers as unresponsive #2762

@kantai

Description

@kantai

HTTP RPC traffic in stacks-blockchain nodes can prevent the nodes from synchronizing with other peers due to "unresponsiveness". This isn't problematic for non-public nodes, but if a node is intended to service RPC traffic, for example the node is a public node backing an API service, this can be extremely problematic. As an HTTP backlog forms on the node, other nodes will disconnect it:

Disconnect unresponsive unauthenticated peer convo:id=667,outbound=true,peer=UNKNOWN+UNKNOWN://...:20444: 1625777051 + 5 < 1625777057

The node is then unable to make any progress and falls behind the network.

I think there's a couple of possible ways to resolve this:

  1. Prioritization of request handling. It seems like the overwhelmed node isn't responding to it's own initialized handshake. Perhaps those kinds of requests should be bumped up in priority?
  2. Add an allow list configuration option. A setup with public nodes that expects to occasionally experience near-capacity request throughput could have non-public nodes that sync with the public nodes. These non-public nodes could be configurable such that they never disconnect the public nodes.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions