I am testing a web application login page loading time with 300 thread users and ramp up period of 300 secs.Most of my samples return response code 200.But few of them return response code 400,503. My goal is to just check the performance of the web application if 300 users start using it. I am new to Jmeter and have basic knowledge of programming. My Question :- 1.Can i ignore these errors and focus just on timings from the summary report ? 2.If i really need to fix these errors, how to fix it ?

2 Answers

Chris Adams On

Performance testing is different from load testing. What you are doing is load testing.

Performance testing is more about how quickly an action takes. I typically capture performance on a system not under load for a given action.

This gives a baseline that I can then refer to during load tests.

Hopefully, you’ve been given some performance figures to test. E.g. must be able to handle 300 requests in two minutes.

When moving onto load, I run a series of load tests with increasing number of users/threads and capture the results from each test.

Armed with this, I can see how load degrades performance to the point where errors start to show up. This gives you an idea of how much typical load the system can handle.

I’d also look to run soak tests too. This where I’d run JMeter for a long period with typical (not peak) load to make sure the system can handle sustained load.

In terms of the errors you’re seeing, no I would not ignore them. Assuming your test is calling the same endpoint, it seems safe to say the code is fine, its the infrastructure struggling with the load you’re throwing at it.

Dmitri T On

There are 2 different problems indicated by these errors:

  1. HTTP Status 400 stands for Bad Request - it means that you're sending malformed requests which cannot be understood by the server. You should inspect request details and amend JMeter configuration as it is the problem in your script.
  2. HTTP Status 503 stands for Service Unavailable - it indicates the problem on server side, i.e. server is not capable of handling the load you're generating. This is something you can already report as the application issue. You can try to identify the underlying cause by:

    • looking into your application log files
    • checking whether your application has enough headroom to operate in terms of CPU, RAM, Network, Disk, etc. It can be done using APM tool or JMeter PerfMon Plugin
    • re-running your test with profiler tool telemetry to deep dive into what's under the hood of the longest response times

So first of all you should ensure that your test is doing what it is supposed to be doing by running it with 1-2 users/loops and inspecting requests/response details. At this stage you should not be having any errors.

Going forward you should increase the load gradually and correlate the increasing number of virtual users with the increasing response time/number of errors