phpmultithreadingjmeterload-testingstress-testing

What are the physical limits of JMeter?


I'm working on a web application written in PHP which will be used by millions of visitors which can create many hits from different IP addresses all at the same time. Potentially many thousands of hits in the same second is a very real possibility with this particular application. Optimization is out of the question in regards to that fact.

That said, I've been doing some research into JMeter for stress testing. My understanding is this uses multithreading to simulate many http requests (or other types of requests) to a designated server.

My thinking then is that you can only do so many parallel requests at once on a computer with a tool such as this, and I'm worried if I invest the time into learning JMeter further that it will not be enough of an accurate test for the website/service when it goes live.

That said after some looking around and not finding the answer, what are the physical limits of testing for JMeter? What kind of load can it accurately test? Are there alternatives to JMeter (like Grinder), or a service (paid or free) that simulates many different IP Addresses connecting to a server to test?


Solution

    1. The limits on the number of virtual users (threads) are very high (> two billion threads) so it is the last thing I would worry about especially given JMeter can be run in Distributed Mode
    2. When it comes to web applications performance testing well-behaved JMeter test plan accurately simulates real users sitting behind real browser. What these "users" will do it totally up to you. See How to make JMeter behave more like a real browser guide for more details.
    3. If you need the load to originate from different IPs (you know about distributed testing already, don't you?) be aware that JMeter is capable of IP Spoofing
    4. Alternatives are (apart from aforementioned Grinder)