A load testing tool for Sei Chain that generates transactions and measures performance.
make build
cp profiles/local.json my-config.json
Edit my-config.json
:
{
"endpoints": ["http://localhost:8545"],
"chainId": 1329,
"scenarios": [
{"name": "EVMTransfer", "weight": 100}
],
"accounts": {
"count": 100,
"newAccountRate": 0.1
},
"settings": {
"workers": 5,
"tps": 100,
"statsInterval": "10s",
"bufferSize": 1000,
"trackUserLatency": true
}
}
./seiload --config my-config.json
Flag | Default | Description |
---|---|---|
--config, -c |
Config file path (required) | |
--workers, -w |
1 | Workers per endpoint |
--tps, -t |
0 | Transactions per second (0 = unlimited) |
--stats-interval, -s |
10s | Stats logging interval |
--buffer-size, -b |
1000 | Buffer size per worker |
--dry-run |
false | Simulate without sending |
--debug |
false | Log each transaction |
--track-receipts |
false | Track transaction receipts |
--track-blocks |
false | Track block statistics |
--track-user-latency |
false | Track user latency metrics |
--prewarm |
false | Prewarm accounts before test |
./seiload --config my-config.json --workers 5 --tps 100
./seiload --config my-config.json --workers 20 --buffer-size 2000
./seiload --config my-config.json --debug --dry-run
./seiload --config my-config.json --track-receipts --track-blocks
./seiload --config my-config.json --track-user-latency --stats-interval 5s
{
"endpoints": ["http://localhost:8545"],
"chainId": 1329,
"scenarios": [...],
"accounts": {...},
"settings": {...}
}
"scenarios": [
{"name": "EVMTransfer", "weight": 50},
{"name": "ERC20", "weight": 30},
{"name": "ERC721", "weight": 20}
]
"accounts": {
"count": 100,
"newAccountRate": 0.1
}
"settings": {
"workers": 5,
"tps": 100,
"statsInterval": "10s",
"bufferSize": 1000,
"trackUserLatency": true
}
Settings Precedence: CLI flags > Config file settings > Default values
Available settings:
workers
: Number of workers per endpointtps
: Transactions per second (0 = unlimited)statsInterval
: Stats logging interval (e.g., "10s", "5m")bufferSize
: Buffer size per workerdryRun
: Simulate without sending transactionsdebug
: Enable debug loggingtrackReceipts
: Track transaction receiptstrackBlocks
: Track block statisticstrackUserLatency
: Track user latency metricsprewarm
: Prewarm accounts before test
- EVMTransfer: Simple ETH transfers
- ERC20: ERC20 token operations
- ERC20Noop: ERC20 no-op transactions
- ERC20Conflict: ERC20 conflicting transactions
- ERC721: NFT operations
throughput tps=133.00, txs=1330, latency(avg=8ms p50=5ms p99=27ms max=494ms)
user latency height=5191 txs=32 min=1s p50=2s max=5s
blocks height=5191 time(p50=2s p99=5s max=8s) gas(p50=21000 p99=50000 max=100000)
make build
make test
make lint
make clean
- Check endpoint URLs in config
- Verify network connectivity
- Try
--dry-run
to test config
- Increase
--workers
- Increase
--buffer-size
- Reduce
--buffer-size
- Reduce worker count
- Disable receipt tracking