Understanding Apache JMeter (Stress Test) on Azure DevOps RRS feed

  • Question

  • User-1134857695 posted

    Hi everybody! It's been a while now. For the first time, I'm stress testing a site. I want to know how capable is the site so I can estimate how much it will cost me to support x amount of users. 

    I've been reading for a while now, and I know this is something specific to my use case. That's why I'm testing critical endpoints of the application. I've purposely created a controller with POST parameters, no authentication and dummy data that constantly inserts into a production Database. All of these are controlled and can be easily cleaned after the test. 

    I currently have a .NET Core 2.1 App with a separate MSSQL Express instance running. The server is being run on 1GiB RAM and 1 vCPU on an EC2 instance in AWS. 

    I've decided to use JMeter with Azure DevOps and I'm confused on how to read it, and where should I focus on. 

    The test consisted of the following: 

    Number of Agents: 20. 

    Load duration: 1 minute. 

    (See point #1 of the questions to get the configuration of JMeter)

    Here are some questions:

    1. What's the difference between the Number of agents (Azure) and The Number of Threads (users) in JMeter? I currently have in my JMeter script: 
      1. Number of Threads (users): 20
      2. Ramp-Up Period: 0 (Meaning that all the 20 will be launched simultaneously, right?)
      3. Loop Count: 3
      4. Backend Listener configured to my computer's graphite backend. 
      5. Visual Tree disabled.
    2. How can I know what's the bottleneck? Or what's the issue? I can see only a spike in RAM when I see the logs for the main server. The CPU of the MSSQL barely got hit, and the RAM had a 50 MB usage when I hit it with the load test.  (see the full overview picture at the bottom). I decided to investigate the application logs and I see timeout exceptions. What's been saturated? 

    Timeout expired

    Here's what's Azure is showing: (There are some Gate timeout 504 errors as well)

    Here's a full overview of Azure's result.

    apache jmeter

    Thursday, November 15, 2018 3:59 PM

All replies

  • User61956409 posted

    Hi superjose,

    What's the difference between the Number of agents (Azure) and The Number of Threads (users) in JMeter?

    In this blog, you can find:

    Number of agents is the scaling factor. Your JMeter test will be replicated across the number of agents you 
    specify and accordingly the load will be multiplied. For example, if the total number of threads in your
    JMeter test is 50 and you select 5 agents, your app will be hit with requests using 250 threads. More agents
    will be available in the future to generate a higher load.

    How can I know what's the bottleneck? Or what's the issue?

    You can trace the changes of avg resp time with userload and req/sec, and you can check actual Memory Usage, Cpu Time etc metrics of your AWS. 

    Based on your test errors, there are many 5xx errors occur, please check if something wrong with your application code (or code logic).

    Besides, you post your question in Azure DevOps related forums:

    With Regards,

    Fei Han

    Friday, November 16, 2018 3:15 AM
  • User-1134857695 posted

    Excellent! Thank you so much <g class="gr_ gr_23 gr-alert gr_gramm gr_inline_cards gr_run_anim Punctuation only-ins replaceWithoutSep" id="23" data-gr-id="23">Fei</g> Han!

    Friday, November 16, 2018 3:20 AM