-
Notifications
You must be signed in to change notification settings - Fork 715
Closed
Description
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:
- 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?
- 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.