Hardware configuration to run 200 users for Jmeter - jmeter

Hi guys I want to run a test ( load test) with almost 200 users. I needed to know the exact hardware configuration I would require like : RAM, disk space, and all.
Can someone help me on this....thanks in Advance.
(P.S : please don't tell me it depends on your user and all I'm new to Jmeter I don't know anything)

Actually it depends on what your test is doing, number of Samplers, number of PreProcessors, PostProcessors, Assertions, request and response size, etc.
Minimal configuration would be:
At least 512KB per thread + around 100 megabytes for JMeter to operate which gives ~100 MB of RAM
At least ~50 MB of disk space (JMeter) + ~400 MB for Java SDK/JRE + how many extra space you need for test data and test results
However only you can get the exact answer by running your actual test and measuring the JMeter's footprint using i.e. JVisualVM or JMeter PerfMon Plugin
Also make sure you're following JMeter Best Practices

#Mehvish It is impossible to say the correct hardware requirement. But, a normal machines of this generation might support it. But, only way to validate is to actually do it.
Please refer this article as it has some good info which might help.
https://sqa.stackexchange.com/questions/15178/what-is-recommended-hardware-infrastructure-for-running-heavy-jmeter-load-tests

Related

JMeter: Reduce CPU and Internet Bandwidth, not working

I want to test my website's main pages like homepage, payment page, registration page in lower bandwidth. For that, I have tried this tutorial https://qautomation.blog/2019/05/29/how-to-simulate-network-bandwidth-in-jmeter/ and the command is
jmeter -httpclient.socket.http.cps=<cps value> -n -t <path of .jmx>
Here I tried CPS values 64, 128, 256 but minimum, maximum, and throughput values are always the same, in the aggregate report.
Am I doing something wrong?
Also, how can I increase or decrease CPU allocation in the same command?
You miss -J key which is used to pass a JMeter Property via command-line override
Depending on the protocol you're using you might need to add another property for HTTPS
Assuming all above:
jmeter -Jhttpclient.socket.http.cps=xxx -Jhttpclient.socket.https.cps=xxx -n -t <path of .jmx>
See How to Simulate Different Network Speeds in Your JMeter Load Test for more detailed and somehow correct steps.
With regards to "decrease CPU allocation" - follow Reducing resource requirements of the JMeter Best Practices. If you still lack CPU - consider going for Distributed Testing. If you cannot get another machine and still need to reduce CPU usage - look for the way of changing CPU affinity for your OS but be aware that in this case the throughput will decrease as well

JMeter parameterized tests with large CSV files

I'm using JMeter to run performance tests, but my sample data set is huge.
We want to simulate production-like traffic, and in order to do that, we need to have a large variety of requests replayed from production logs.
In turn, this causes us to have a huge sample dataset. So the questions are:
What's the recommended CSV sample size for large input samples?
Is CSV Data Config enough to use files that contain 300MB - 500MB or more worth of HTTP request payloads?
Can I just increase JVM memory limits?
Is this method good enough? Is there a better alternative?
Thanks!
The size of the CSV has no impact on memory usage of JMeter provided you use CSV Data Set.
Just don't use the CSVRead function as per the note in documentation.
By the way I see you flagged question as JMeter 3.2, in case you are using it, you should upgrade to JMeter 4.0 which is the most powerful and accurate version.

Jmeter -- how memory-consuming is__UUID()?

I've faced a situation when some of my tests require posting some absolutely unique data. Therefore I need to use __UUID() function.
I was wondering if the usage of this function can create additional load, as apart from doing what the test is supposed to do it generates the guid.
How memory-consuming is this operation, and how 'clean & objective' such a test can be considered in terms of performance analysis?
It should be reasonable as it calls :
UUID.randomUUID().toString()
Of course it uses a bit of memory (JMeter function system + few bytes for UUID)
It think the impact is more related to CPU.
Just monitor your JMeter JVM and check it stays in reasonable limits.

Most simple "get started" with jmeter

I'm trying to get going with JMeter, and am having trouble finding a really simple tutorial for the first "getting started" the docs seem to be very verbose, covering all kinds of scenarios.
Can anyone point me at something that would take me from having downloaded the app (I can run it, and get a gui) to the point where I can send a single, predefined GET request, at a specific rate.
Just one request, no login, nothing. But I'd like to be able to send it at a selected rate.
This will do two things for me, first, get past that wall of info that I'm finding and give me a starting point from which to experiment. Second, it's actually pretty much all I want to do anyway; I don't want to record results, I just want to hit a server at specific steady state rates, and observe the OS level impact on the server when it stabilizes (number of threads, memory usage, rate of context switching, cpu usage). I'll get to more complex things later, maybe.
I'm sure someone has written something to achieve this, but google keeps finding heavyweight "tomes" that are off-putting to wade through and feel like they're wasting huge amounts of my time :(
(Oh, and I did search here, but only found more complex stuff; hope I didn't get egg on my face with a duplicate!)
TIA,
Toby
I find Blazemeter's JMeter tutorial to be very beginner friendly:
http://community.blazemeter.com/knowledgebase/topics/10018-jmeter-tutorials
http://community.blazemeter.com/knowledgebase/articles/197560-jmeter-video-tutorial-writing-your-first-jmeter-s
(I'm not affiliated with Blazemeter)
The structure of the simplest JMeter Test Plan as per your scenario should be something like:
Thread Group - to set a number of threads and iterations
HTTP Request - to configure endpoint, path, parameters, etc.
Constant Throughput Timer - to set exact desired request execution rate (N requests per second)
Hope this helps.
Gach, as so often is the case, the terminology was obscuring that first level of understanding that allows one to make use of the docs. I found what I needed right there in the regular documentation:
http://jmeter.apache.org/usermanual/build-web-test-plan.html

Can writing to logfiles seriously slow down your application?

I'm using Log4Net to write logs to files. Can this serioulsy slow down my application? I know it depends on how much I'm writing away, but let's say that some hundreds of logs can be written per second.
It will slow down your application (obviously) but it depends a lot on your application if the slow down qualifies as "serious". I think you need to let it run and then decide if the performance is acceptable...
Of course it can.
As you already said, it depends on how you write it.
If you are logging to a different hard-drive, things will be better. If you are logging via a message based transport, you will probably be OK.
Yes it can. It is crucial to consider the configuration, so you can configure it to not write that much log and then also not have much overhead.
eg.
if (logger.IsDebugEnabled)
{
logger.DebugFormat("log: {0}", myObject.ToString());
}
This will execute ToString only if needed.
The fact that you need to write the log to the disk when you enabled it - you can't do much against it. But usually it is not useful to write too much log, because nobody will ever read it anyway.
I am not sure regarding the slowness of application.
But i can say that if you are writing hundreds of logs per second and that too into a same file then make sure that thread synchronization is in place because you dont want crashes when multiple threads try to access same file.
"Slow" is not a binary property. It's relative to what else you're doing.
If whatever else you're doing takes 10 times as much wall-clock time as the logging, then logging will increase it by 10 percent: (10/10 + 1/10 = 1.1)
If whatever else you're doing takes 1/9 as much wall-clock time as the logging, then logging will increase it by 10 times: (1/1 + 9/1 = 10)

Resources