-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
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
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.