

# Automate the testing of your software applications at scale
<a name="solution-overview"></a>

Publication date: *December 2025* 

Distributed Load Testing on AWS helps you automate performance testing of your software applications at scale to identify bottlenecks before you release your application. This solution simulates thousands of connected users generating HTTP requests at a sustained rate without the need to provision servers.

This solution leverages [Amazon Elastic Container Service (Amazon ECS) on AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) to deploy containers that run your load test simulations and offers the following capabilities:
+ Deploy Amazon ECS on AWS Fargate containers that run independently to test the load capacity of your application.
+ Simulate tens of thousands of concurrent users across multiple AWS Regions generating requests at a continuous pace.
+ Customize your application tests using [JMeter](https://jmeter.apache.org/), [K6](https://k6.io/), [Locust](https://locust.io/) test scripts, or simple HTTP endpoint configuration.
+ Schedule load tests to run immediately, at a future date and time, or on a recurring schedule.
+ Run multiple load tests concurrently across different scenarios and regions.

This implementation guide provides an overview of the Distributed Load Testing on AWS solution, its reference architecture and components, considerations for planning the deployment, and configuration steps for deploying the solution to the Amazon Web Services (AWS) Cloud. It includes links to an [AWS CloudFormation](https://aws.amazon.com/cloudformation/) template that launches and configures the AWS services required to deploy this solution using AWS best practices for security and availability.

The intended audience for using this solution's features and capabilities in their environment includes IT infrastructure architects, administrators, and DevOps professionals who have practical experience architecting in the AWS Cloud.

Use this navigation table to quickly find answers to these questions:


| If you want to . . . | Read . . . | 
| --- | --- | 
|  Know the cost for running this solution. The estimated cost for running this solution in the US East (N. Virginia) Region is USD \$1 30.90 per month for AWS resources.  |   [Cost](cost.md)   | 
|  Understand the security considerations for this solution.  |   [Security](security-1.md)   | 
|  Know how to plan for quotas for this solution.  |   [Quotas](quotas.md)   | 
|  Know which AWS Regions support this solution.  |   [Supported AWS Regions](plan-your-deployment.md#supported-aws-regions)   | 
|  Learn about the optional MCP Server for AI-assisted load testing analysis.  |   [MCP server integration](mcp-server-integration.md)   | 
|  View or download the AWS CloudFormation template included in this solution to automatically deploy the infrastructure resources (the "stack") for this solution.  |   [AWS CloudFormation template](aws-cloudformation-template.md)   | 
|  Access the source code and optionally use the AWS Cloud Development Kit (AWS CDK) to deploy the solution.  |   [GitHub repository](https://github.com/aws-solutions/distributed-load-testing-on-aws)   | 

# Features
<a name="features"></a>

The solution provides the following features:

 **Multiple Test Framework Support** 

Supports JMeter, K6, and Locust test scripts, as well as simple HTTP endpoint testing without requiring custom scripts. For more information, refer to [Test types](design-considerations.md#test-types) in the Architecture details section.

 **High User Load Simulation** 

Simulates tens of thousands of concurrent virtual users to stress test your application under realistic load conditions.

 **Multi-Region Load Distribution** 

Distributes load tests across multiple AWS Regions to simulate geographically distributed user traffic and assess global performance.

 **Flexible Test Scheduling** 

Schedules tests to run immediately, at a specific future date and time, or on a recurring schedule using cron expressions for automated regression testing.

 **Real-Time Monitoring** 

Provides optional live data streaming to monitor test progress with real-time metrics including response times, virtual user counts, and request success rates.

 **Comprehensive Test Results** 

Displays detailed test results with performance metrics, percentiles (p50, p90, p95, p99), error analysis, and downloadable artifacts for offline analysis.

 **Baseline Comparison** 

Designates baseline test runs for performance comparison to track improvements or regressions over time.

 **Endpoint Flexibility** 

Tests any HTTP or HTTPS endpoint across AWS Regions, on-premises environments, or other cloud providers.

 **Intuitive Web Console** 

Provides a web-based console for creating, managing, and monitoring tests with no command-line interaction required.

 **AI-Assisted Analysis (Optional)** 

Integrates with AI development tools through the Model Context Protocol (MCP) server for intelligent analysis of load testing data.

 **Multiple Protocol Support** 

Supports various protocols including HTTP, HTTPS, WebSocket, JDBC, JMS, FTP, and gRPC through custom test scripts.

# Benefits
<a name="benefits"></a>

The solution provides the following benefits:

 **Comprehensive Performance Testing** 

Supports load testing, stress testing, and endurance testing to thoroughly evaluate application performance under various conditions.

 **Early Issue Detection** 

Identifies performance bottlenecks, memory leaks, and scalability issues before production deployment, reducing the risk of outages.

 **Real-World Usage Simulation** 

Accurately simulates real-world user behavior and traffic patterns to validate application performance under realistic conditions.

 **Actionable Performance Insights** 

Provides detailed metrics, percentiles, and error analysis to understand application behavior and guide optimization efforts.

 **Automated Testing Workflows** 

Enables scheduled and recurring tests for continuous performance monitoring and regression testing without manual intervention.

 **Cost-Efficient Infrastructure** 

Uses serverless AWS Fargate containers with pay-per-use pricing, eliminating the need for dedicated testing infrastructure and ongoing subscription fees.

 **Rapid Test Deployment** 

Deploys and scales test infrastructure in minutes without provisioning or managing servers.

 **Easy Interrogation of Test Results** 

Integrates with AI development tools through an optional Model Context Protocol (MCP) server, enabling natural language queries and intelligent analysis of load testing data for faster insights and troubleshooting.

# Use cases
<a name="use-cases"></a>

 **Pre-Production Validation** 

Test web and mobile applications under production-like load conditions before launching a new version to validate performance and identify issues.

 **Capacity Planning** 

Determine the maximum number of concurrent users your application can support with current infrastructure and identify when scaling is required.

 **Peak Load Verification** 

Verify that your infrastructure can handle peak loads, seasonal traffic spikes, or unexpected surges in demand without performance degradation.

 **Performance Optimization** 

Identify performance bottlenecks such as slow database queries, inefficient code execution, network latency, or resource constraints.

 **Regression Testing** 

Schedule recurring load tests to detect performance regressions introduced by new code deployments or infrastructure changes.

 **Global Performance Assessment** 

Evaluate application performance from multiple geographic regions to ensure consistent user experience for a global audience.

 **API Load Testing** 

Test REST APIs, GraphQL endpoints, or microservices to validate response times, throughput, and error rates under load.

 **CI/CD Pipeline Integration** 

Integrate automated performance testing into continuous integration and deployment pipelines to catch performance issues early in the development cycle.

 **Third-Party Service Testing** 

Test the performance and reliability of third-party APIs or services that your application depends on under various load conditions.

# Concepts and definitions
<a name="concepts-and-definitions"></a>

This section describes key concepts and defines terminology specific to this solution:

 **scenario** 

Test definition including the test’s name, description, task count, concurrency, AWS Region, ramp-up, hold-for, test type, schedule date, and recurrence configurations.

 **task count** 

Number of containers that will be launched in the Fargate cluster to run the test scenario. Additional tasks will not be created once the account limit on Fargate resources has been reached. However, tasks already running will continue.

 **concurrency** 

The concurrency (number of concurrent virtual users per task). The recommended concurrency based on default settings is 200. Concurrency is limited by CPU and memory. For tests based on Apache JMeter, higher concurrency increases the memory utilized by the JVM on the ECS task. The default ECS Task Definition creates tasks with 4 GB of memory. It is recommended to start with lower concurrency values for 1 task and monitor the ECS CloudWatch metrics for the Task Cluster. Refer to [Amazon ECS cluster utilization metrics](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster_utilization.html).

 **ramp-up** 

The time period to gradually increase from zero to the target concurrency level.

 **hold for** 

The time period to maintain the target concurrency level after ramp-up completes.

For a general reference of AWS terms, see the [AWS Glossary](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html).