3

We have a requirement to test the website behavior when 1000+ users are acting on a website at a time.

For that we prepared a jMeter script like below

-Added a Thread group with 1000 users

-Ramp up : 0

-Loop Count : 1

After executing the script we are getting the response as 500 Internal error after some 100 to 200 HTTP requests.

We have checked the server connection limits and DB connection limits and we monitored the server CPU usage also, every thing was fine but still we are getting 500 internal server error.

Some where in google we read that applying the load with ramp up value as 0 is not proper load testing. Is it true?

Now what we want to know is

1)Is ramp up period mandatory?

2)Why we are facing the 500 internal server error?

NOTE : We have used the distributed architecture

1 master and 2 slaves

we have applied 500 as a thread count in Master.

Any help or ideas are welcome and appreciable.

5
  • Are you using a distributed architecture for running your JMeter tests or you're running it from a single machine? Sep 23, 2016 at 8:54
  • Yes, we are using the distributed architecture
    – QAMember
    Sep 23, 2016 at 9:25
  • Can you share the details of your test plan and the distributed architecture? How many salves and what is the Thread count in the Thread Group of your Master Machine? Sep 23, 2016 at 9:31
  • Have you tried the same by applying some Ramp Up? Does it give same result with Ramp Up configured? Sep 23, 2016 at 9:55
  • @TESTasy, Actually I have not tried by configuring the ramp up period. Because my manager is saying that we need all the 1000 users at a time but if ramp up period is produce some time delay between the thread.
    – QAMember
    Sep 23, 2016 at 10:14

3 Answers 3

10

You have 1 Master and 2 Slaves.

The total load being generated is 500 + 500 = 1000.

Since you mention that the server health is good during the test execution. Yet, you are getting an Internal Server Error (Error code 500).

Here's what you should try,

Run a test of maybe 500 user and while the test is running try to access the URL in a browser. If the URL opens up fine there's no problem. If it gives an error, for example, Error 500, and still the server health (CPU, RAM, Disk & Network I/O) are fine, then maybe your network port or database is not able to handle the load.

If there is no problem with 500 users, try the same with 1000 users. This time along with the health of the server also monitor the health of your slave and master systems. At the same time try accessing the URL in a browser. See the result. If the URL fails to open the page properly, then there might be a problem similar as explained above.

4
  • Yes, we have executed the script with 500 users and at the same time we have manually checked in the browser and its working fine there.In the 500 users also we got some errors(500), count is less compared to while running with 1000 Threads
    – QAMember
    Sep 23, 2016 at 10:17
  • 6
    Have you looked at which requests are failing? Maybe 3rd party links like, images, JS or CSS or something else chokes with such high load. Maybe some scripts on the server are failing or like I said above your port or your database are choking. BUT if you had requests failing at 500 there's no point you testing for 100 users. You need to fix the problem with 500 users first! Check which requests are failing? Maybe share a screenshot of a sample request here. Sep 23, 2016 at 10:20
  • Yes, It is a single request like xyz.com/home . In response I can see only html response.
    – QAMember
    Sep 23, 2016 at 11:05
  • So you are getting no errors to identify the problem? Well that's a thinker! Sep 23, 2016 at 13:54
0

It is not mandatory if you want to keep asking questions like this all the time.

As per How to Ramp Up in Steps in Your Load Tests article

Let’s say you want to test 100k concurrent users. If you run the load test with a linear ramp up and it crashes, you only know that your site or app can’t handle 100K users. You have no idea how much it can handle before that point.

So the recommended approach is:

  • starting with 1 virtual user to check your test script is ok, there are no errors and you're happy with the metrics (if response time for 1 user exceeds SLA you can hold on till the issue is fixed)
  • ramping up to ~5 virtual users to see whether concurrent actions of > 2 users lead to any problems, deadlocks, clashes, etc.
  • gradually increasing virtual users to anticipated number and monitoring metrics, application under test and load generators health
  • if there are no errors and result look good - leave your application under the load for a prolonged period of time, so called Soak Testing, it will help to identify memory leaks and other errors associated with the prolonged load.
  • if your application still behaves fine you can increase the load until it breaks - Stress Testing - to see which component will break first and whether you system recovers when the load comes back to normal
0

Yes, you should have a ramp up. If you start the script for all 1000 users at the same time, they will do the first action all at the same time. This is a load that is far more demanding for the apllication than would be realistic. Best would be to have a ramp up for at least the time one iteration takes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.