I need to conduct a performance test on Azure website and the Users count is '200000'. Can anyone suggest me the configuration for this?
3 Answers
- 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.
Thanks!
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)
good luck!
-
"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." There is no such rule of thumb. In my engineering organization this would be a fire-able offense. Commented Jul 17, 2016 at 23:03
-
I've found it can be useful as a start . Simulating 200,000 "real" users is a lot. Leveraging one hyperactive virtual user is a valid technique to simulate many users given limited resources to test with. Not suggesting an iron clad 10:1 claim. (caching? wait times? transaction type? network infrastructure?) But presenting as "yes, we can generate load using virtual users, and those virtual users can effectively load the system more than one single" is valid. (disclaimers about testing medical equipment, nuclear power plant message busses and space shuttles vs. testing twitter.)– Aaron B.Commented Jul 19, 2016 at 18:34
-
However...I will humbly admit the 10:1 is also a reflexive answer from back in the bad-old days of Mercury Loadrunner. When you're charged $$$$ per user, there is a necessity for understanding exactly how much you can leverage each one of those buggers. Given cost/user isn't an issue with jmeter, the question may be more along the lines of "how soon will I hit the 'nix open port limit/how many AWS instances will I need?"– Aaron B.Commented Jul 19, 2016 at 18:51
-
Notice how you never mention the risk of failure, only the cost of the test components. Risk is what you are mitigating and by operating your virtual user in a way that is not natural you will distort the performance in a way that a natural population will not, creating engineering ghosts in one area and missing issues in another. If you don't have sign off authority then defer the issue of cost to those who do Commented Jul 19, 2016 at 20:49
-
I'll readily admit that in my world, that "fast/cheap/good" triangle is always a tough balancing act that even the best managers have to juggle. (manager != me) Rarely if ever have I had all the resources I would have liked. My tack is generally "if you give us X, we can do Y. Without Y, here's my best estimation of risk. You make the call." If you're always able to secure ideal resources for your testing efforts, my hat is off to you. Your ability for negotiation is far beyond mine. =^)– Aaron B.Commented Jul 21, 2016 at 14:03