Ramp up / down algorithm for testing user load

I am working on a custom load testing application for web servers, and I am trying to implement a function to automatically increase the maximum number of "users" that a server can handle. I want to test test users until a certain threshold for the average response time and / or HTTP request failure rate is reached, and then I want to kill / call users until a stable state is found just below threshold values.

In fact, I want to find the most stable number of concurrent users who still meet the requirements as quickly as possible.

I can, of course, figure out the algorithm for this myself, but I think there may be existing buildup / deceleration algorithms that I could use. If someone knows about this, I would love to if you could point me in the right direction!

Thanks!

+4
source share
1 answer

It depends a lot on what is happening and if the system begins to decay gradually or if a discrete drop in performance occurs (for example, β€œhealthy” β†’ β€œdead”).

In the second case, there is no feedback to indicate whether you are approaching the border, so you first need to find a point that exceeds the threshold and jump between this and the largest value that does not exceed the threshold. You can simplify this with 2 (or more) separate servers. Center splitting is pretty much the fastest way, although if you have 10 servers, you can split it into 10 steps at each iteration.

If you get some feedback, then you are looking for a method that includes this. You may find that the Nelder-Mead algorithm is appropriate. This is fairly easy to implement, but you will most likely find implementations in any language of interest to you.

+1
source

All Articles