A load testing tool for Sei Chain that generates transactions and measures performance.
make buildcp profiles/local.json my-config.jsonEdit my-config.json:
{
"endpoints": ["http://localhost:8545"],
"chainId": 713714,
"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": 713714,
"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 buildmake testmake lintmake clean- Check endpoint URLs in config
- Verify network connectivity
- Try
--dry-runto test config
- Increase
--workers - Increase
--buffer-size
- Reduce
--buffer-size - Reduce worker count
- Disable receipt tracking