Skip to content
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

Add RPC Stress Testing Tool (lotus-bench rpc) to lotus-ec2-tools Testing and Server Deployment Framework #11102

Open
9 tasks
snissn opened this issue Jul 27, 2023 · 1 comment
Assignees

Comments

@snissn
Copy link
Contributor

snissn commented Jul 27, 2023

User Story

As a developer working on the Filecoin network, I want to have a stress testing tool (lotus-bench rpc) integrated into the lotus-ec2-tools testing and server deployment framework. This tool will allow us to perform comprehensive stress tests on the RPC methods of the Filecoin network, identify and address performance issues, and ensure the health and stability of the network with each lotus release.

Acceptance Criteria

  • The stress testing tool lotus-bench rpc is successfully integrated into the lotus-ec2-tools testing and server deployment framework.
  • The stress testing tool is capable of querying each RPC method both sequentially and concurrently.
  • The tool supports rate limiting for controlling the query rate of each method.
  • Multiple different endpoints can be queried simultaneously, with support for different concurrency levels and rate limits for each method.
  • After running the stress tests, the tool generates a comprehensive report summarizing the stress testing results for each method. The report includes:
    • Latency distribution
    • Latency histogram
    • HTTP and JSON error codes summary
    • Total Requests
    • Total Duration
    • Requests per second (QPS)
    • Average latency
    • Median latency

Technical Breakdown

  • Integrate the lotus-bench rpc tool into the lotus-ec2-tools repository.
  • Ensure the tool can be built using the existing build process of lotus-ec2-tools.
  • Update the test plan to include running the stress tests using lotus-bench rpc.
  • Modify the test plan to include capturing and storing the stress test results as a report.
  • Ensure the stress test results are formatted in a way that is easily readable and understandable.
  • Implement a mechanism to share the generated stress test report to Slack, similar to the existing issue for message profiling (#XYZ).

Deliverables

  • lotus-bench rpc integrated into the lotus-ec2-tools repository.
  • A comprehensive stress test report generated after running lotus-bench rpc.
  • The stress test report can be shared to Slack automatically upon test completion.

Future Work

  • Consider adding the stress testing tool lotus-bench rpc as part of the automated GitHub Actions workflow for continuous testing.
  • Run the lotus daemon with --pprof flag and generate reports
  • A way to call out in the testing tool if there's been a regression from previous runs
@snissn snissn self-assigned this Jul 27, 2023
@snissn
Copy link
Contributor Author

snissn commented Jul 27, 2023

This is the relevant PR that created the lotus bench features used for this PR - #10761 - ( created by @fridrik01 great work thank you!! )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant