Commit Graph

8 Commits

Author SHA1 Message Date
Rod Vagg
730c96ecaf src: lint: bump golangci-lint to 1.59, address unchecked fmt.Fprint* 2024-06-06 19:51:39 +10:00
Fridrik Asmundsson
861731ee7c Add support to easily benchmark binary for understanding their latencies/histogram 2023-09-14 14:17:42 +00:00
Fridrik Asmundsson
e1b69f84d6 Cleanup after removing urface upgrade 2023-05-27 10:55:10 +00:00
Fridrik Asmundsson
b563a36a99 Address review comments 2023-05-27 10:55:10 +00:00
Fridrik Asmundsson
4b0ca30daf Add --watch option to see progress while benchmark is running 2023-05-27 10:55:10 +00:00
Fridrik Asmundsson
dcc72a43ee Also report on json errors (not only http errors) 2023-05-27 10:55:10 +00:00
Fridrik Asmundsson
d0e9502bfe small fixes 2023-05-27 10:55:10 +00:00
Fridrik Asmundsson
78d7ccd391 Add new RPC stress testing tool (lotus-bench rpc) with rich reporting
This benchmark is designed to stress test the rpc methods of a lotus node so that we can simulate real world usage and measure the performance of rpc methods on the node.

This benchmark has the following features:
* Can query each method both sequentially and concurrently
* Supports rate limiting
* Can query multiple different endpoints at once (supporting different concurrency level and rate limiting for each method)
* Gives a nice reporting summary of the stress testing of each method (including latency distribution, histogram and more)
* Easy to use

To use this benchmark you must specify the rpc methods you want to test using the --method options, the format of it is:

  --method=NAME[:CONCURRENCY][:QPS][:PARAMS] where only METHOD is required.

Here are some real examples:
  lotus-bench rpc --method='eth_chainId' // run eth_chainId with default concurrency and qps
  lotus-bench rpc --method='eth_chainId:3'  // override concurrency to 3
  lotus-bench rpc --method='eth_chainId::100' // override to 100 qps while using default concurrency
  lotus-bench rpc --method='eth_chainId:3:100' // run using 3 workers but limit to 100 qps
  lotus-bench rpc --method='eth_getTransactionCount:::["0xd4c70007F3F502f212c7e6794b94C06F36173B36", "latest"]' // run using optional params while using default concurrency and qps
  lotus-bench rpc --method='eth_chainId' --method='eth_getTransactionCount:10:0:["0xd4c70007F3F502f212c7e6794b94C06F36173B36", "latest"]' // run multiple methods at once`,

Fixes: https://github.com/filecoin-project/lotus/issues/10752
2023-05-27 10:55:10 +00:00