-
Notifications
You must be signed in to change notification settings - Fork 62
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
grpcbox-ct: Stress test grpcbox #29
base: main
Are you sure you want to change the base?
Conversation
Added a stress_test to stress number of concurrent gRPC sessions that can be run. BY default it is set to 10. But can be modified by environment variable GRPCBOX_STRESS_TEST # To run 25 concurrent sessions: $ GRPCBOX_STRESS_TEST=25 rebar3 ct --suite grpcbox_SUITE --case stress_test On my system, it above command breaks around 30-35. Signed-off-by: Vasu Dasari <[email protected]>
Thanks, I was wanting to add something for this that utilized an existing tool used by other grpc servers to stress test. |
I am using grpcbox for my project. I have a gRPC server and multiple gRPC clients(~10-15) and they use bidirectional streams for communication. When all clients initiate bidirectional transfer at the same time, I see that some calls are not successful. I am still debugging that issue. Meanwhile thought having some way of performing stress test in grpcbox's ct is a good idea as well. And hence this PR. As I mentioned in my commit, once concurrent sessions go beyond 30-35, we can see failures. It would be interesting to see if there are any parameters I could fine tune to bump that number or if there are any blockades in dependencies, etc. |
Do you know what the error is? Maybe it is related to joedevivo/chatterbox#136 which I still haven't gotten around to fixing :( |
Actually, I am debugging around h2_connection side of things. In my case, some messages/connections are getting dropped. I need to characterize this completely. Thanks. |
@tsloughter Revisiting this issue after a long time. Here is my theory. There is a single
Here is what I am thinkinking how to fix the issue:
I am inclining towards 2, let me know what you think as it is a bit cleaner. I will have a pretty of this and will create a separate pull request. |
This commit addresses stress-test failure mentioned in tsloughter#29. Added two new APIs: add_channel(Name, Endpoints, Options) delete_channel(Pid) This would give ability to user to add and delete channels on the fly. Also modified stress_test test case to use this logic. With out this change, stress test fails around 10 simultaneous connections. With this change I can see around 90 simultaneous connections. Signed-off-by: Vasu Dasari <[email protected]>
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #29 +/- ##
=======================================
Coverage 38.99% 38.99%
=======================================
Files 28 28
Lines 2090 2090
=======================================
Hits 815 815
Misses 1275 1275 ☔ View full report in Codecov by Sentry. |
Added a stress_test to stress number of concurrent gRPC sessions that can be run. BY default it is set to 10. But can be modified by environment variable GRPCBOX_STRESS_TEST
On my system, it above command breaks around 30-35.
Signed-off-by: Vasu Dasari [email protected]