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

SignalR: Benchmark server logging #9264

Closed
wants to merge 12 commits into from

Conversation

Projects
None yet
5 participants
@staff0rd
Copy link
Contributor

commented Apr 10, 2019

Gives a better idea of what the benchmark server is doing. Helpful for getting an overview when using multiple crankier clients to load test.

  • Timestamp is time since first connection made
  • Displays current connection count
  • Displays peak connection count
  • When connection counts are > 100, limits logging to (connectionCount % 100 == 0) to avoid console spam

Example from a B2s instance;

[00:18:23] Connected: 76200 current, 76200 peak.
[00:18:34] Connected: 76300 current, 76300 peak.
[00:18:43] Connected: 76400 current, 76400 peak.
[00:19:32] Connected: 76500 current, 76500 peak.

I also have this if you wanna raise multiple crankier clients in containers. Remember to pull them down when you're finished as they'll live (bill) forever if you don't turn them off.

@anurse anurse added the waiting label Apr 16, 2019

anurse and others added some commits Apr 17, 2019

access modifier
Co-Authored-By: staff0rd <staff0rd@users.noreply.github.com>
access modifier
Co-Authored-By: staff0rd <staff0rd@users.noreply.github.com>
use Interlocked
Co-Authored-By: staff0rd <staff0rd@users.noreply.github.com>
Use interlocked
Co-Authored-By: staff0rd <staff0rd@users.noreply.github.com>
@staff0rd

This comment has been minimized.

Copy link
Contributor Author

commented May 5, 2019

Updates completed, this is now pending your review @anurse, @halter73

@BrennanConroy
Copy link
Member

left a comment

I would prefer not touching the BenchmarkServer project if possible.

I'm fine with us creating a new example server project in the Crankier folder that is specific to Crankier usage.

@anurse

This comment has been minimized.

Copy link
Member

commented May 6, 2019

Yeah, it's not super clear but the BenchmarkServer app is actually used other benchmarking logic we do elsewhere. Introducing some locks and logging may adversely affect that benchmark.

Rather than an entirely separate app, a separate Hub with it's own endpoint URL would be OK with me.

@staff0rd

This comment has been minimized.

Copy link
Contributor Author

commented May 6, 2019

@anurse that will not build because of #9976.

How about /crankier/client and /crankier/server?

@halter73

This comment has been minimized.

Copy link
Member

commented May 7, 2019

@BrennanConroy @anurse What if instead of creating yet another benchmark server app, we added an opt-in flag like --enable-stdout-connection-counting? BenchmarkServer already adds command line arguments to config.

Without the flag, we could register a NoOpEchoHubConnectionCounter which would have no measurable performance impact.

@anurse

This comment has been minimized.

Copy link
Member

commented May 8, 2019

I'm very in favor of any option that doesn't involve a whole new test app :). Command line arg sounds great.

@staff0rd

This comment has been minimized.

Copy link
Contributor Author

commented May 20, 2019

@BrennanConroy thoughts on options above?

@anurse anurse added this to the 3.0.0-preview6 milestone May 20, 2019

@BrennanConroy

This comment has been minimized.

Copy link
Member

commented May 21, 2019

I'm still not a fan of making a precedent that we can modify the BenchmarkServer app as long as it "doesn't affect performance".

In your other PR you were saying you are not able to build this app because of the Directory.Build.Props file which we are planning on keeping, so I'm not sure how this will help.

@staff0rd

This comment has been minimized.

Copy link
Contributor Author

commented May 21, 2019

@anurse @halter73 What if I were to alter Crankier such that if you passed a serve argument it would host and expose its own Hub specific to the purposes it needs?

For load testing purposes the scenario would then be

crankier serve to run a server
crankier local <args> to run the clients that will connect to this server

@anurse

This comment has been minimized.

Copy link
Member

commented May 21, 2019

Sure, that sounds like a good approach.

@staff0rd

This comment has been minimized.

Copy link
Contributor Author

commented May 23, 2019

I'll open a new PR with a different approach.

@staff0rd staff0rd closed this May 23, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.