aws-samples / distributed-load-testing-using-aws-fargate

Solution to setup AWS Fargate to run multi-region distributed performance testing.
Other
83 stars 28 forks source link

Clarification question #7

Open sean4200 opened 5 years ago

sean4200 commented 5 years ago

Hi I am new to load testing and AWS, but believe this solution could be beneficial for future projects.

But require some clarification, would this running my full load in all az or is it splitting my load across all the az for example: if I had basic test which contains 250 rps would this solution make it 250 * each az or would it be 250/each az

ferdingler commented 5 years ago

Hi @sean4200 , thanks for your interest in the project! That's a fair question.

This solution creates a new VPC in your account which contains 3 Availability Zones and yes, when you launch a Load Test it will distribute the docker containers within the 3 AZs as evenly as possible. You can check this logic in the script that triggers the execution: https://github.com/aws-samples/distributed-load-testing-using-aws-fargate/blob/master/bin/runner.py. By default it triggers 3 docker containers (1 per AZ), but you can overwrite this value by overriding the TASK_COUNT environment variable within the Code Pipeline.

Now, each docker container will run an instance of your defined Taurus scenario. These scenarios are defined in YAML format, for example:

execution:
- concurrency: 5
  ramp-up: 1m
  hold-for: 5m
  scenario: aws-website-test

scenarios:
  aws-website-test:
    requests:
    - https://aws.amazon.com

Where concurrency is the amount of TPS that the container will execute. So, for example if you specify a concurrency of 5 and you leave the default of 3 docker containers per load test execution. Then you will have a total of 15 TPS.

sean4200 commented 5 years ago

Thank you, ok so if I had a JMeter test within my taurus file which was configured to generate 250 request per second to a endpoint, this would actually run 3 times, e.g. 250 RPS in az1, 250 in az2 and 250 in az3, totalling 750 RPS to the endpoint.

Another question, if the parameters for concurrency, hold and ramp are removed from the Taurus file would the ones set in the jmeter test then be used?

ferdingler commented 5 years ago

@sean4200

1) Correct. 2) I believe so. If you look at the Taurus docs, you can chose the JMeter Executor: https://gettaurus.org/docs/JMeter , in which you don't specify parameters like concurrency because it takes the ones on your jmx file. I haven't personally tried this. But if you do, please let us know here if it worked. :)