jmeter how to conclude that web server successfully handles 1000 concurrent users - jmeter

We have a web CRUD app.
I need to load test the web app, by simulating 1000 concurrent users.
i am using jmeter, to do the load test.
scenario 1 :
- user login
- request a welcome page
Parameters :
Thread Group : no. of users = 100
ramp-up period = 1
loop = 1
question :
how to i conclude that the web server is capable of accepting 1000
concurrent users?
if in the result tree view all the request gets
status 200 OK means, that web server is capable of accepting 1000
concurrent users? or
if i increase the concurrent users to say
1200, then web server crashes.. will i conclude that the web server
we are using is capable of accepting at max of < 1200 concurrent
users.
what are the other parameters i need to look for the load test

You can conclude it like,
If you see results of all requests as 200 status for not just 1 loop but you need to run your test for some amount of time let say 30 min or something(duration can be decided on stability factor of server).
After some time after test starts, if results starts converging (you will get stable response times) without any errors (1% error rate is acceptable generally) then you can conclude that your web server is capable of supporting 1000 users for login reqeusts
You can increase users to 1200 and try again to see scalability of server (how much your server can scale, with same technique)
that will give you max load your server can take. (stress test)
Very important things you should also monitor while doing these tests are, your server utilization. If your server is choking on resources (100% cpu, 100% memory , or network etc) then probably you should lower the concurrent users and try again. generally system utilization should not be more than 80% on all counters.
as you are running this test for one request only i.e. login . generally results will be inaccurate. you should test with mostly used workflows which will give you precise idea.
I hope this clarifies the doubts.

Related

Concurrent Thread and Ultimate Thread Group and Performance Bench mark

While understanding concept of Concurrent thread and ultimate thread group, i am confused to understand result of summary/aggregate report while running concurrent thread or ultimate thread group .For example if i have 200 user and ramp up time 60 sec then i didn't see all sampler request as 200 sample after completing execution successfully but only few sampler request have 200 sample. when i use normal thread group then i always got thread count same for each sampler request after completing execution .
for realistic load testing with more user , could you please suggest me which thread group should prefer.
Could you please provide valuable guidance with some valuable link/book and also share me standard performance bench mark criteria or key parameter detail while doing load testing.(if any bench load parameter value does not meet standard then we can say that there is a performance issue)
Thanks for giving valuable time in advance.
Thanks
amit
This is due to the fact that:
Your application response time is too high
Your test duration is too low
For example I can see response times > 80 seconds:
it means that if a single virtual user has cumulative response time for 2 samplers > 160 seconds and the test duration is 120 seconds it will not be able to execute all the requests. Just increase your test duration to be i.e. 10 minutes and you should see more virtual users capable of executing all the Samplers you defined in the test plan.
Also given first user is capable of executing all the requests successfully and in time it looks like that your application gets overloaded hence cannot respond fast enough when the number of concurrent users reaches some "critical threshold", you can add listeners like Active Threads Over Time and Response Times vs Threads, this way you will be able to correlate increasing load with the increasing response time.
If also makes sense to collect:
Baseline health metrics of your application (CPU, RAM, Network, Disk usage, etc.), it can be done using JMeter PerfMon Plugin.
Lower level details like slowest methods, largest objects, heaviest database queries, etc. This form of information can be obtained using profiling tools specific to your application programming language(s).

how much requests are made for 100 concurrent users on 5 page application on Jmeter load test

I am running jmeter tests with 100 to 1k users successfully,
But I suspect if response time is higher than expected.
My test plan include: get login and post login, get test page , post test page, get search page, post search page....
in total 5 get and 5 post forms.
For same number of users if I reduce number of pages the overall response time decreases
so should I run test for pages separately?
Should I reduce number of users for realistic numbers (5 pages*20 users=100 concurrent users)--for performance test?
Or should I be using distributed system?
What is the best practice?
Current Setup: i5, 8GB Ram, One windows machine with Jmeter 3.1
You load testing should be realistic, otherwise it does not make sense. You need to simulate anticipated users behaviour as closely as possible, only this way you will get the real life picture.
So you need to implement your test scenario to match the way, your site will be used in the real world. If it is alive already you can use Access Log Sampler to replay the traffic. If it is not, you can think about "user groups", like:
50% of not authenticated users will be browsing the site
20% of authenticated users will be browsing the site
5% of users will be in login process
3% of users will search for something
etc.
You can use different Thread Groups to represent different groups of users and Throughput Controller to control the frequency of samplers execution inside the Thread Group. See Running JMeter Samplers with Defined Percentage Probability article for more information on how to distribute the load in a realistic way.
There are N number of factors that will affect the overall response times. number of users / pages etc are also few of them. Do you have any specific requirement for performance test? If you are not sure of non functional requirements, then I think all your questions will be clarified in these posts -
http://www.testautomationguru.com/jmeter-performance-testing-application-of-littles-law-to-workload-models/
http://www.testautomationguru.com/jmeter-tips-tricks-for-beginners/
I think you could be running into jmeter issues. What is the JVM heap and GC algorithm that you are using? How are you measuring the performance of each page? If you are using "Transaction Controller" to measure the performance, any slowness in jmeter will affect your transaction controller values.
Have you correlated with the application logs to really understand that the application is indeed slowing down when you decrease the # of pages? If your application response time is constant, I think jmeter is the culprit here. Move all your measurements to the sampler level instead of transaction controllers and update the results

Recommended thread properties values for stresstesting with jmeter

I want to stresstest a site using Jmeter, right now i am using WAMP and widnows.
What would be the best stresstesting settings for this? this is a page that will have alot of users, 100k users / day+
100k users per day is not that "lot" in my opinion:
100 000 / 24 == 4166.67 users per hour
4167 / 60 == 69.44 users per minute
69 / 60 = 1.15 users per second
The normal way of testing the application is starting with either 1 or expected amount of virtual users and gradually increase the load until one of the following conditions is met:
response time goes above acceptable level
application starts consuming > 80-90% of underlying hardware resources (CPU, RAM, Disk and/or Network IO)
application starts returning errors and the amount of errors exceeds threshold
Also I would recommend to test the following scenarios:
load test - put your application under anticipated load for short period to see how does performance metrics look like
stress test - determine the maximum amount of concurrent users that your application can handle keeping reasonable response times. You can also determine breaking point, i.e. when application starts returning errors or stops responding and whether it can recover
soak test - basically the same as point 1, but the load should sustain for a longer period, i.e. several hours or if time allows - several days. It will help to identify memory leaks if any

JMeter performance testing with concurrent users 100

I want to test JMeter with 100 concurrent users and for 1 hour with 1 request in HTTP request.
PFB configuration of JMeter.
No of threads-100
rampup-1
loopcount fore ever
scheduler
start time-2015/11/26 10:36:00
end time-2015/11/26 11:36:00
duration(secs)-3600
startup delay-0
Whether JMeter hit all 100 users in concurrent . or else I need to change any configuration.
PFA images for additional details.
HTTP request
It's not clear in your question that what problem are you facing, So please be more specific.Let me guess about your problem.
Concurrency means "All the users are doing the different activity at the same time".
Do not get confused by the term between "Concurrent users" and "Simultaneous Users".These two are not the same.
Simulations users mean all the users are doing the same activity at the same time.
To clear the concept about "Concurrency" and "Simultaneity" you should go through this article.
So if you want to reach concurrency for those 100 users it will depend on your Test Scripts too.
In above test 100 Threads will be concurrent when the Ramp up time=1 second is reached.
If you want to monitor concurrent users at any given time, you should use Active Threads Over Time listener.

does testing a website through JMeter actually overload the main server

I am using to test my web server https://buyandbrag.in .
I have tested it for 100 users. But the main server is not showing like it is crowded or not.
I want to know whether it is really pressuring the main server(a cloud server I am using).Or just use the client resourse where the tool is installed.
Yes as mentioned you should be monitoring both servers to see how they handle the load. The simplest way to do this is with TOP (if your server OS is *NIX) also you should be watching the network activity i.e. Bandwidth, connection status (time wait, close wait and so on).
Also if your using apache keep an eye on the logs you should see the requests being logged there
Good luck with the tests
I want to know "how many users my website can handele ?",when I tested with 50 threads ,the cpu usage of my server increased but not the connections log(It showed just 2 connections).also the bandwidth usage is not that much
Firstly what connections are you referring to? Apache, DB etc?
Secondly if you want to see how many users your current setup can hand you need to create a profile or traffic model of what an average user will do on your site.
For example:
Say 90% of the time they will search for something
5% of the time they will purchase x
5% of the time they login.
Once you have your "Traffic Model" defined, implement it in jMeter then start increasing your load in increments i.e. running your load test for 10mins with x users, after 10mins increment that number and so on until you find your breaking point.
If you graph your responses you should see two main things:
1) The optimum response time / number of users before the service degrades
2) The tipping point i.e. at what point you start returning 503's etc
Now you'll have enough data to scale your site or to start making performance improvements from a code point of view.

Resources