Skip to content

dropPeer caused by too much 'nonce too low' transactions #2861

@buddh0

Description

@buddh0

System information

Geth version: geth v1.5.3-beta
OS & Version: linux
Commit hash : (if develop)

Expected behaviour

In the QA network, there are 10 validators running on a single machine.
The number of peers should remain stable during benchmarking.

Actual behaviour

Image
number of peer shakes during beachmark.

However, peer connections fluctuate during the benchmark due to the following reasons:
Validator A only broadcasts the block hash to Validator B. Upon receiving it, Validator B starts a timer to fetch the block header and body within 10 seconds. If this process is not completed in time, Validator B will drop the peer connection.

At the same time, Validator A continuously sends a large number of transactions to Validator B. Many of these transactions do not arrive at the optimal time and are rejected from the transaction pool due to a nonce too low error. Validator B then pauses for 200 milliseconds before resuming the reception of transactions from Validator A.

The requests to fetch the block header and body are processed in between these incoming transactions. This causes delays, preventing Validator B from receiving the block header and body in time, ultimately leading to a dropped peer connection.

The higher the TPS, the more pronounced the issue becomes theoretically.

Steps to reproduce the behaviour

Backtrace

[backtrace]

When submitting logs: please submit them as text and not screenshots.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions