-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance of JSON RPC is degraded with the heavy loading #3896
Comments
thanks for this, does blockscout run a lot of trace_* requests? there#s another |
In the provided setup there were 2 types of trace_* requests:
|
I was unable to run the docker-compose repro, could be an Apple silicon docker issue
could you try again after bumping one issue here could be that all the rpc handlers that require blocking IO are executed on the same thread pool, so tracing could interfere with regular rpc tasks, which could explain the hanging |
This issue is stale because it has been open for 14 days with no activity. |
this should be fixed now that we improved trace request rate limiting derived from available cores |
Describe the bug
After several hours of running ETH Mainnet instance of Blockscout on Reth node, we started to observe performance issues with node's JSON RPC.
Requests like
eth_getTransactionReceipt
,eth_getTransactionByHash
,eth_getBalance
,eth_getBlockByNumber
,trace_replayBlockTransactions
totally start to hang (there is no response from the node when requested).Those and new similar requests were hanging even after disabling traffic from the application. Only restart of the node returns it to the operational state.
The Reth node is running via docker-compose with this yaml:
Prysm is used for consensus layer.
Blockscout loading to the node can be enabled using this repo for perf issue reproduction.
Steps to reproduce
Steps to reproduce:
where
ETHEREUM_JSONRPC_HTTP_URL
- node's JSON RPC endpoint,ETHEREUM_JSONRPC_WS_URL
- node's WS endpointFor instance, with the node running on the same host:
As a results the node will stop respond to any requests beside simple like
eth_blockNUmber
,web3_clientVersion
,net_version
.At least, JSON RPC requests to these methods will hang:
eth_getBlockByNumber
eth_getTransactionReceipt
eth_getTransactionByHash
eth_getBalance
trace_replayBlockTransactions
Node logs
The text was updated successfully, but these errors were encountered: