I need to conduct a performance test on Azure website and the Users count is '200000'. Can anyone suggest me the configuration for this?
- First of all you won't be able to create such a load from a single machine, go for Distributed Testing when one JMeter server orchestrates multiple slave machines (load generators) executing the same script at the same time.
- Given your site lives at Azure it's better to test it from Azure and preferably the same region to avoid traffic charges.
You can reduce number of virtual users by considering the following:
- real users don't hammer the server non-stop, they need some time to "think" between operations. Time to load the page is also added to "think" time where user is "idle"
depending on site nature it might be the case that the user clicks a link or does something i.e. 3 times per minute. So 200k users will send 600k requests per minute which is 10k requests per second and this is something you can try to get from a single host given it's powerful enough. So you have 2 approaches to choose:
- Add "think time" between operations to make load pattern more realistic. See Timers user manual section for options
- Disable "think" time. This way less threads will simulate more actions due to increased frequency.
Make sure you're using optimal JMeter configuration, to wit:
- run test in non-GUI mode
- use appropriate JVM options
- disable all listeners
See 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure for above settings explained in details and few more JMeter tuning tips.
If you want to simulate 200000 Users you need to set the number of threads as 200000. If there are input parameters for a User you need to prepare a data sheet in a CSV and Use that CSV in Jmeter via CSV Data Set Config. You can give the variable names in the CSV Data Set Config and the use the same in your sampler (http) requests.
In-essence, number of threads equals to number of Users. If you want all the threads to act at the same time (in a second) you should keep the ramp up time as 1.
The general rule of thumb is that one jmeter (loadrunner/etc) user is worth at least 10 "real" users insomuch as they're pounding relentlessly and far faster than an actual human.
Assuming this, it reduces your needed users from 200,000 to 20,000. Still a very, very large number.
I've used amazon web services to scale load tests far beyond what a single machine would do. Using some glue scripts, I imagine you could do something similar with azure. (use azure to test azure!) Use one machine to control a number of slave machines each running your load test code. 10 azure vms running 2000 users each would hit the 20,000 user mark above.
Even without automation, 10 vms is still within the realm of feasible to configure and control manually. A bit of a pain, yes. But still possible. (vs, say, 100 machines)