DescartesResearch / TeaStore

A micro-service reference test application for model extraction, cloud management, energy efficiency, power prediction, single- and multi-tier auto-scaling
https://se.informatik.uni-wuerzburg.de
Apache License 2.0
120 stars 141 forks source link

Large-scale performance tests like in the paper #137

Closed llarsson closed 4 years ago

llarsson commented 5 years ago

Please document how one would replicate the (distributed) load tests that are mentioned in Section IV ("Use-cases") of the paper. How many hosts were used for the TeaStore, and how many were used to subject it to load? Are there any scripts that you used that may be of value, should one like to independently verify the results presented in the paper (and build upon them)?

SimonEismann commented 5 years ago

There might be minor differences between the three experiments, but for the first one we used the following setup:

Off the top of my head, I can't think of any scripts that might be useful for you. In general, a performance test consists of 3 tasks:

If you are interested, we can also discuss this in a quick skype call.

llarsson commented 4 years ago

A LIMBO beginner's two follow-up questions:

SimonEismann commented 4 years ago
  • To get an overall request per second rate of 5000, would I typically then use 5 load generator machines and provide them each with a load intensity profile of 1000 requests per second?

For large experiments that require more than a single loaddriver instance to generate the required load, the LIMBO loadgenerator supports using multiple loadgenerator instances with a single director instance. To do so, the --ip commands can parse multiple ips (seperated by a comma, without any spaces e.g. 10.0.0.0,10.0.0.1). So in your scenario, a single load intensity file with 5000 requests per second, a single director instance and five loadgenerator instances should work.

  • How does the number of threads relate to the load generator's ability to function? What would be a reasonable number for e.g. 1000 requests per second?

Each thread sends out a request, waits for a reply and is then added back to the pool of available threads to send out new request. Therefore, the required number of threads depends on the response time of the application, for example if the application response within 0.5s, then 500 threads could generate a load of 500 requests. A too large number of threats combined with complex user sessions can generate some unintended behavior, however, this can be fixed using the flag --randomize-users.

SimonEismann commented 4 years ago

Closed as stale, feel free to reopen if the issue still persists.