How to analyse JMeter result?

TestingJmeterLoad Testing

Testing Problem Overview


I am new in JMeter tool. Can anyone help me for the best way to analyse JMeter reports?

Testing Solutions


Solution 1 - Testing

Simply list of related links you can possibly find useful:

Native graphs:

Free Open source solutions for automated graphs:

Recipes with custom development:

3rd party solutions:


UPD.
Please find, use and feel free to extend this Awesome JMeter collection continued as github repo.

Solution 2 - Testing

There are 3 test that are must when doing performance testing, there should always be a baseline, a peak test and a stress test. These test relate to each other because of the little's law. The long-term average number of customers in a stable system L is equal to the long-term average effective arrival rate, λ, multiplied by the time a customer spends in the system, W; or expressed algebraically: L = λW..

enter image description here

Jmeter already provides means to check this values, the standar plugin provides plots for reponse times, hits as well as throughput. There is no way to directly tell how many users were active on the system, it is not the same concurrent users than active users. The plugins are enough to produce the reports, but they do not allow to control much of the presentation, i will use some plots produced using python(they add labels, and have 2 y axis).

Baseline Test: This case is an special case of the law, in this case the active users is constant and it is one, then:

  • L = λW
  • 1 = λW
  • 1/W = λ

enter image description here

If the application run the same piece of code, the response time will stabilize over time, then the arrival rate will be constant over time too.

There is a service that does nothing else than wait some time to go by:

enter image description here

2 Seconds service: The arrival rate was 1/2TPS.

enter image description here

3 Seconds service: The arrival rate was 1/3TPS.

enter image description here

Peak Test: This is nother special case, in this case load incrase until it surpass the system thoughput, because the load is greater than throughput the response times do increase. During the test the threads number should increase fast enough to recover from long response times.

enter image description here

This time instead of running the peak, i will stress the system with more load than it is able to handle during the whole test. To control the service throughput:

enter image description here

The active transactions are those that had leave the injector but haven't get a reponse, those are transactions that are queue in some place whitin the system.

  • λ(t ) = c, T(t) = k; both the load as well as the thoughput are constant over time.
  • L = Σλ - ΣT = ct - kt; The active transactions is the difference in between the cumulative load and the cumulative thoughput.
  • L = (c - k)t
  • λW= (c - k)t
  • ​cW(t) = (c - k)t
  • W(t) = t(c - k)/c

Because response times do grow as active users do, we will need the injector to create new threads as fast as new conections are requiered, most of the pool threads are going to be busy.

2TPS arrival rate, 1 TPS throughput:

  • The response times function is 1/2t
  • The injector stress the system during 300 seconds.
  • The test last 600 seconds.

enter image description here

4TPS arrival rate, 1 TPS throughput:

  • The response times function is 3/4t
  • The injector stress the system during 300 seconds.
  • The test last 1200 seconds.

enter image description here

6TPS arrival rate, 5 TPS throughput:

  • The response times function is 1/6t
  • The injector stress the system during 300 seconds.
  • The test last 360 seconds.

enter image description here

Solution 3 - Testing

In simple word if you want to analyze your JMeter report...

  1. Start with server CPU and RAM utilization. When you run a performance test on your server, see how much CPU and RAM is utilized by the current test.
    Issue the following command on hosted site server; it will create a log file of CPU usage.

     while true; do 
       ( echo "%CPU %MEM ARGS $(date)" &&
         ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 |
         tail ) >> ps.log
       sleep 1
     done
    
  2. See overall response time, it should not exceed your expected response time criteria. See below image. My expectation is response time should not go above 525 microseconds, but some requests are crossing it. Find these kind of requests which are taking time.

Overall Response Times:

overall response time

  1. See Transaction per second, how many transaction are made per second and is there any drop in the test time frame?

  2. Inspect the summary report, Average time, and max time to see which requests are taking the most time. Currently many listeners are available in JMeter as add-ons or built in, but these are the major things to look at in order to be able to guess properly what's going on. And you can use other reports like that.

Follow my blog for more details https://softwaretesterfriend.blogspot.in/

Solution 4 - Testing

Starting with version 3.0, JMeter includes a dynamic HTML report that can be generated either at the end of a load test or from a result file.

See generating-dashboard

Solution 5 - Testing

In order to analyze your JMeter results, you can use

  1. Listeners in JMeter
  2. Blazemeter Sense
  3. Reports Dashboard

Solution 6 - Testing

In addition to all the other answers: there is a nice site of BlazeMeter where you can upload your test result file (.jtl) and it will generate all kinds of (interactive) reports for it. It even analyzes it for you and points out when the first error occurs, what the saturation point is, etc. https://sense.blazemeter.com/gui/

If you have a graphite/grafana infrastructure I can recommend to add the Backend Listener to the project. It will send real-time metrics to the graphite server and you can monitor the test in graphite (or grafana).

Solution 7 - Testing

If you are new JMeter understanding JMeter listeners and other components will help you . check the tutorial

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjohnView Question on Stackoverflow
Solution 1 - TestingAliaksandr BelikView Answer on Stackoverflow
Solution 2 - TestingSebastian G.View Answer on Stackoverflow
Solution 3 - TestingSoftware Tester FriendView Answer on Stackoverflow
Solution 4 - TestingbenbenwView Answer on Stackoverflow
Solution 5 - TestingSatyajitView Answer on Stackoverflow
Solution 6 - TestingSvenView Answer on Stackoverflow
Solution 7 - Testinganuja jainView Answer on Stackoverflow