We want to load test a web application for 550 users using VS 2013 ultimate. A machine is a high-end machine with 32GB RAM and 6 cores processor. Is one machine enough for a load test of 550 users? or do I need to go for distributed load?
2 Answers
It depends.
VS2013 does not place any limits on the number of virtual users. That said, there are trade-offs.
You may want to use distributed load tests if:
- Your application or the test processing is resource-heavy.
- You need your virtual users to come from multiple IP addresses (this functionality is handled by test agents).
- Network bandwidth usage is one of the variables you are monitoring.
- You want to simulate different user agent strings
- Your load test includes different scenarios with different load profiles
You may want to use single-system load tests if:
- You don't care about having a single IP address per user
- You want to increase load until system failure (the fewer variables in the mix for this kind of test, the better, I've found)
- You don't need to check network bandwidth usage OR the bandwidth between your test machine and your app is enough to handle all your expected traffic
The number of virtual users that one agent can support depends upon several things, but they amount to how much CPU and memory each user uses. Things that contribute include:
- Number of requests in the web test
- Duration of web test
- Number and complexity of extraction and verification rules, also of plugins
Some of the data recorded for each run of a web test is held in RAM until the web test completes. All this data adds up so the RAM may become exhausted with too many users on an agent.
Microsoft have published a guide to how many users an agent can support. It appears that the latest version of this guide has the same values as published in 2012. The recommendation is that a single 2.6GHz CPU with 2GB memory can support up to 500 users and a dual processor 2.6GHz CPU with 2GB memory can support up to 1000 users. Your 6 cores and 32GB memory should be ample.
Remember to specify Run tests in 64 bit process on 64 bit machine
in the Hosts
section of the active ".testsettings" for the test run.