Skip to content

[Performace] eth_getTransactionReceipt concurrent performance 10x slower than eth_getTransactionByHash #10099

@TangMonk

Description

@TangMonk

System information

Erigon version: 2.59.3

OS & Version: Linux

Chain/Network: Mainnet

CPU: AMD EPYC 7763, 64 Core, 128 Thread

Memory: 256 GB DDR4

Disk: 15TB, NVEM 4.0

Erigon.toml config file:

datadir = "/home/david/erigon_archive/"
port = 30304
"authrpc.port" = 8557
"authrpc.addr" = "0.0.0.0"
"authrpc.vhosts" = "*"
"authrpc.jwtsecret" = "/home/david/ethereum/consensus2/jwt.hex"
"db.size.limit"="8TB"
"torrent.download.rate"="1024MB"
"maxpeers"=500
metrics = true
"torrent.port" = 42071
"private.api.addr" = "127.0.0.1:9091"
chain = "mainnet"
http = true
ws = true
"http.addr" = "0.0.0.0"
"http.api" = ["eth", "debug", "net", "trace", "web3", "erigon", "admin", "txpool", "ots"]
"http.corsdomain" = "*"
"http.port" = 7546

I am using wrk to do http concurrent test:

eth_getTransactionReceipt performace

$ wrk -t125 -c125 -d30s -s eth_getTransactionReceipt.lua http://localhost:7546

eth_getTransactionReceipt.lua file:

wrk.method = "POST"
wrk.body   = '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x4e47c43b82a302aa574ad7b61cf54cc72ad1e548e016dc1e3c17ee8b75a20198"],"id":1}'
wrk.headers["Content-Type"] = "application/json"

result:

Running 30s test @ http://localhost:7546
  125 threads and 125 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    21.34ms   28.40ms 533.12ms   97.96%
    Req/Sec    54.79      9.08   252.00     92.12%
  203675 requests in 30.10s, 0.92GB read
Requests/sec:   6766.57
Transfer/sec:     31.40MB

eth_getTransactionByHash performace

$ wrk -t125 -c125 -d30s -s eth_getTransactionByHash.lua http://localhost:7546

eth_getTransactionByHash.lua file:

wrk.method = "POST"
wrk.body   = '{"jsonrpc":"2.0", "method":"eth_getTransactionByHash", "params":["0x4e47c43b82a302aa574ad7b61cf54cc72ad1e548e016dc1e3c17ee8b75a20198"], "id":1}'
wrk.headers["Content-Type"] = "application/json"

result:

Running 30s test @ http://localhost:7546
  125 threads and 125 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.82ms    1.85ms 155.09ms   98.32%
    Req/Sec   580.47     78.17     4.18k    95.17%
  2171851 requests in 30.10s, 2.64GB read
Requests/sec:  72164.60
Transfer/sec:     89.74MB

Summarize

eth_getTransactionByHash is 72164.60/s
eth_getTransactionReceipt is 6766.57/s

eth_getTransactionReceipt is slower than geth

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions