Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
I've been using JMeter for a long time and during my research, I came across Apache Benchmark, which seemed a bit more simple load testing tool to me.
So my assumption is that; Apache Benchmark is more suitable choice for benchmarking one API at a time. And it won't be a good choice -and maybe impossible- for performing an end-to-end load test.
But I am also curious about if A/B has any kind of advantages over JMeter in terms of performance / benchmark testing.
Could you please explain?
Thanks...
When it comes to "hammering" the endpoint with simple HTTP Requests ab can be suitable alternative to JMeter as long as you're fine with the following limitations:
no control regarding how connections are used/re-used
no support of other authentication types than Basic (digest, NTLM, Kerberos)
no control of DNS caching
no clustered mode of tests execution
missing metrics like connect time, TTFB, etc. and in general results are quite "poor" comparing to JMeter's HTML Reporting Dashboard
The only advantage of ab I can think of is lower CPU/Memory footprint
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 1 year ago.
Improve this question
I am trying to weigh in on open source tools like Jmeter or locust for testing dashboard charts and reports. I have tested the Http URL with Jmeter but how can we test the charts or graphs or reports that are embedded in a HTML page? Is there an option in JMeter or Locust or any other tool?
Basically for dashboards, HTML page loads faster but the chart loading and drill down takes time, which i think is the real key indicator of performance of a dashboard.
Appreciate your help.
Arun
None of the load testing tools will execute client-side JavaScript and my expectation is that your charts are being loaded and "drilled down" (whatever it means) using AJAX technology.
You can still execute the calls for the charts data in browser-like manner, for JMeter you can use Parallel Controller for this, for Locust you will have to code it yourself, however this way you will not able to measure rendering performance as this is something what browsers do.
So if you want to load test the backend - whatever tool should be capable of doing this, just make sure to produce the same network pattern like real browser do.
For the frontend performance assessment you will need a real browser, for example JMeter can be integrated with Selenium via WebDriver Sampler and for Locust you can write the code which will kick off and orchestrate browser(s) using selenium module
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I am entirely new to the concepts of distributed systems. Kindly let me know even if the question should be rephrased.
I am trying to make a distributed systems with 10 clients and one server. There is a queue at server side, that can be accessed by clients one at a time. So what kind of locking mechanism could be used so as to avoid spurious data? Are semaphores feasible in this situation? If possible, kindly provide a reference, so as to have a much deeper knowledge of the same.
Semaphores on the server are feasible, and indeed are the way to go. On a GNU/Linux system such as Debian, see man 7 sem_overview and man 1 lockfile.
The simplest method is probably to let the server serve no more than one client at a time, refusing all requests from other clients. A refused client waits a random (not definite) length of time, then tries again.
Another method can be to let the server queue requests, but this is more complicated (and may still involve refusing some requests).
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
when some one developing wcf service which will be consumed and used by thousand of people then what are the key point we need to keep in the mind to design web service which will deliver best performance. so please give me all the best tips to design wcf service which can help service to give best performance. thanks
another question what are tools and technique is used in the industry to test the performance of wcf service before hosting in production server. thanks
As for the design, make sure that service is (ok , cliches but still worth to mention)
Easy to scale
Stateless (Per-Call)
Uses no locks
Caches data
Well in general it should be "just" highly performant but it of course depends on your use-cases so it is more important that you know how your users will use the system :
you wrote thousand of people but you should have exact numbers defined
will the service will be used only on certain hours ? If so , maybe it's possible to compute / cache any data that will be heavily used before ?
what is the required throughput /number of calls per sec / avg. number of users working ?
what about peak volumes ? Is it used constantly or it's just users loading data at one time and then nothing ?
where is it going to be hosted ? IIS or self-hosted ? Can you control it ? How is the security plugged int ? Is security a concern ?
who calls your service ? Is SOAP ok ? Can you use REST ?
So the point is that to get best performance you need to have clearly defined goals like "I want to handle 1000 calls per sec and each call uses around 2MB of data" :)
As for the tools a best one is something that resembles your end-users so for final testing it could be a bunch of selenium tests and for perf testing even a console application spamming your endpoints will work but a key factor here is separation so that your services are hosted on different server then test-client
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I am new to jmeter. We have developed a java based web application using spring framework. We want to know whether we can find memory leaks using jmeter.
You can run a JMeter script for a few hours to create the load together with an Application Performance Monitoring solution like New Relic to look for memory leaks.
JMeter is not primary designated to find memory leaks. In few words the main rule of JMeter is request URLs so many times as you required and evaluate results you get back. That explanation is a bit simply and JMeter is really more complex then just this case. However if you guess you've a memory leak in your application, it can be useful in some cases to use JMeter just for to generate many request. However finding memory leaks IS NOT JMeter functionality. You have to monitor you application with some other tools (e.g. jmap, jvisualvm, etc.) and use JMeter just for to generate required specific requests.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I am looking to capacity test my websocket server but don't really know where to start?
I am able to write a AI that will send messages to test the usage, but how would I simulate/make 100, 500, 1000 connections etc...?
I had a similar problem a little while ago when I had to load test thousands of connections against a server using the socket.io library. I was not able to find any off-the-shelf-solutions to do this so in the end I ended up building my own test using Node.js and a few for loops.
The advantage of Node is you can pretty much copy and paste the client side javascript into your server code so it's pretty simple to simulate the client and then you only need to make multiple connections to generate load. It's a quick and easy way to run the required javascript to establish the socket connection (assuming this is how you connect to your socket).
The gotcha I hit was running more than 600 listeners tended to max out the CPU on my node box but a little bit of AWS magic solved that.
Another issue is reporting results. There's not really any concept of response time with a socket connection, at least not in the classic sense, so it's hard to know when things are going wrong - at least from the client side perspective. But from monitoring the server we were able to see when connections failed and when resources started to get scarce and this was enough for us to benchmark how many connections it could support.
Autobahn Testsuite was designed to meet that need but the performance section of the tool still says "Under Development".
You could use JMeter for this purpose and get the WebSocket sampler plug-in from here: http://github.com/maciejzaleski/JMeter
For that many connections 1000 you might need to get more than one agent machine to achieve your task. This doesn't necessarily have to be dedicated server as you could deploy agents on few workstations (developers/testers machines) and used them for your test purpose. You could limit the impact by scheduling test execution to run out-of-hours.
Jmeter plugin is having severe limitations with number of concurrent users. It was working well only till ~450 users. Then I tried with artillery library(https://artillery.io/docs/testing_websockets.html) but this library also has restrictions with loops with their web socket package.