CS-6381 / FinalProject

9 stars 21 forks source link

MQ Performance Test Template #16

Closed jmbeach closed 3 years ago

jmbeach commented 3 years ago

This is a template inspired by the base test that is geared towards analyzing performance of MQ’s.

I wrote this on my phone so forgive typos and such

laynemoseley commented 3 years ago

if you really did write this on your phone, kudos. That is a lot of markdown for a phone.

laynemoseley commented 3 years ago

@jmbeach my main feedback is that as the tests scale up, we should limit the number of variables that are changes. For example, increasing message count and message size at the same time won't give a clear picture of where the bottlenecks are.

For example, we could have 2 types of bottleneck tests:

where each of those have their own test and they scale up individually.

Make sense?

laynemoseley commented 3 years ago

The other test I've been curious about as well with MQ if fail scenarios. For example, if you have redundancy producers, how many messages are lost when the lead producer fails and a new one takes its place?

jmbeach commented 3 years ago

@laynemoseley about limiting the changing variables. I agree, but I also worry about assigning too much work to the test runners. I actually would lean towards completely fixing some of the variables and never changing them

laynemoseley commented 3 years ago

which ones would you make static?

laynemoseley commented 3 years ago

we could have two test runs, one that just increases message volume, and one that just increases message size, for example:

Message Volume:

Message Size (static 1000 messages per second)

etc, etc, etc

thesammiller commented 3 years ago

Thanks for this. I like a lot of what you guys are saying.

In the interest of controlling variables, should we also split up single vs. multi threading? I'm curious if there may be a lot of variation in the implementations multi-threading and if it'd be helpful to limit to a single thread for a baseline.

jmbeach commented 3 years ago

My intention with multithreading is to prevent the user from having to spin up 100 VM's. Instead, they can maximize the utilization of cores on 5 VM's.

jmbeach commented 3 years ago

@laynemoseley that might be a better idea to adjust volume like you're saying. then we could just have the publisher run for a fixed duration and the consumer run until messages are all consumed

jmbeach commented 3 years ago

As I mentioned in my discussion post, I'm basing this heavily off of this article. They adjusted:

That's actually it. They must have ran their programs for fixed durations as well. So I'd be good with the following:

Then each test just adjusts:

Just like the artice