Stress Test Website Tools

1 view
Skip to first unread message

Autumn Pitz

unread,
Aug 3, 2024, 11:32:57 AM8/3/24
to resentpresot

Load testing is a good way to see how your site is able to handle requests from visitors. But stress testing can help identify the breaking point, where it is no longer able to respond within a reasonable time. This can be an important tool when benchmarking your website in order to determine if it is time to optimize specific items or upgrade your hosting platform.

Stress testing is a method used for identifying how your website or server performs when it is under heavy load. This is done by simulating an extremely high spike in requests or traffic using a tool built specifically for performance testing sites.

When developing a site, stress tests can help you determine how your code, scripts, or CSS responds to heavy load. This information can be used to build more robust code and help avoid being the cause of load issues.

An example test for an eCommerce site would be to determine the projected amount of visits and requests you receive for a typical promotion, then hit the server with that same amount of simulated traffic. This data can help you identify areas for improvement and determine if your site is prepared to handle the upcoming event.

Performing regular tests can help you locate any potential problems that might occur before it actually happens. The specific interval will depend on how often you update or modify your site. If you make changes often, then you will typically want to test more often as well.

Before you roll out any changes to your site, it is a good idea to test them before they are implemented. This can help you avoid foreseeable problems and save you time by allowing you to react before a problem affects the live site.

For example, you can compare the pre-release and post-release data and have true metrics for how the updates are operating on the live suite. This can help identify if further improvements need to be implemented.

ApacheBench or ab is one of the most popular and commonly used tools for testing the ability of your site to handle a heavy load. I reached out to some of the network engineers for InMotion and this was at the top of their list for command-line-based stress testing tools. It can be installed on Windows, Mac, and Linux and easily configured to send more or fewer HTTP requests. You can have it send multiple requests concurrently (at the same time) and even leave the connections open (KeepAlive) in order to add even more stress to the test.

k6 is a free open source JavaScript tool for stress testing how your site responds to load. This is a much more robust customizable tool than your basic ApacheBench or Loader.io test. This is due to the ability to create custom JavaScript tests. Here are some examples of some tests you can include with k6 is:

If you prefer to run stress tests from a graphical user interface (GUI) instead of from the command line, Loader.io is a good option. Unlike k6 and ApacheBench, you must create an account and run the tests from the Loader.io site. After verifying your domain, you can choose from the following primary test options:

These test results indicate the WordPress site could benefit from optimization. For example, you could try enabling a cache plugin like W3Total Cache, then test again to see if the response time improves and the load goes down during the test.

In the past, I used Microsoft Web Application Stress Tool and Pylot to stress test web applications. I'd written a simple home page, login script, and site walkthrough (in an ecommerce site adding a few items to a cart and checkout).

The reports generated by these tools never made much sense to me, and I would spend many hours trying to figure out what kind of concurrent load the site would be able to support. It was always worth it because the stupidest bugs and bottlenecks would always come up (for instance, web server misconfigurations).

What have you done, what tools have you used, and what success have you had with your approach? The part that is most interesting to me is coming up with some kind of a meaningful formula for calculating the number of concurrent users an app can support from the numbers reported by the stress test application.

JMeter is an open-source load testing tool, written in Java. It's capable of testing a number of different server types (for example, web, web services, database, just about anything that uses requests basically).

It does however have a steep learning curve once you start getting to complicated tests, but it's well worth it. You can get up and running very quickly, and depending on what sort of stress-testing you want to do, that might be fine.

I've used The Grinder. It's open source, pretty easy to use, and very configurable. It is Java based and uses Jython for the scripts. We ran it against a .NET web application, so don't think it's a Java only tool (by their nature, any web stress tool should not be tied to the platform it uses).

We did some neat stuff with it... we were a web based telecom application, so one cool use I set up was to mimick dialing a number through our web application, then used an auto answer tool we had (which was basically a tutorial app from Microsoft to connect to their RTC LCS server... which is what Microsoft Office Communicator connects to on a local network... then modified to just pick up calls automatically). This then allowed us to use this instead of an expensive telephony tool called The Hammer (or something like that).

Anyways, we also used the tool to see how our application held up under high load, and it was very effective in finding bottlenecks. The tool has built in reporting to show how long requests are taking, but we never used it. The logs can also store all the responses and whatnot, or custom logging.

I highly recommend this tool, very useful for the price... but expect to do some custom setup with it (it has a built in proxy to record a script, but it may need customization for capturing something like sessions... I know I had to customize it to utilize a unique session per thread).

A little late to this party. I agree that Pylot is the best up-and-coming open source tool out there. It's simple to use and is actively worked on by a great guy (Corey Goldberg). As the founder of OpenQA, I'm also happy that Pylot now is listed on our home page and uses some of our infrastructure (namely the forums).

However, I also recently decided that the entire concept of load testing was flawed: emulating HTTP traffic, with applications as complex as they have become, is a pain in the butt. That's why I created the commercial tool BrowserMob. It's an external load testing service that uses Selenium to control real web browsers when playing back load.

The approach obviously requires a ton more hardware than normal load testing techniques, but hardware is actually pretty cheap when you are using cloud computing. And a nice side effect of this is that the scripting is much easier than normal load testing. You don't have to do any advanced regex matching (like JMeter requires) to extract out cookies, .NET session state, Ajax request parameters, etc. Since you're using real browsers, they just do what they are supposed to do.

Sorry to blatantly pitch a commercial product, but hopefully the concept is interesting to some folks and at least gets them thinking about some new ways to deal with load testing when you have access to a bunch of extra hardware!

Both tools will handle HTTP and HTTPS and have a proxy recorder to get you started.Both tools use the Controller model to drive multiple test agents so scalability is not an issue (given access to the Cloud).

A hard call as the learning curve is steep with both tools as you get into the more complicated scripting requirements for url rewriting, correlation, providing unique data per Virtual User and simulating first time or returning Users (by manipulating the HTTP Headers).

That said I would start with Jmeter as this tool has a huge following and there are many examples and tutorials on the web for using this tool. If and when you come to a 'road block', that is something you can't 'easily' do with Jmeter then have a look at the Grinder. The good news is both these tools have the same Java requirement and a 'mix and match' solution is not out of the question.

This is a relatively new approach because it relies on the availability of resources that can now be provisioned from the Cloud. With this approach a Selenium (WebDriver) script is taken and run within a headless browser (i.e. WebDriver = New HtmlUnitDriver()) driver in multiple threads.

The scalability is compromised as more VMs will be needed to drive the load, as compared with a HTTP driver such as the Grinder or Jmeter. That said, if you are looking to drive 500 Virtual Users then with 20 Amazon Small Instances (6 cents an hour each) at a cost of just $1.20 per hour gives you load that is very close to the Real User Experience.

We recently started using Gatling for load testing. I would highly recommend to try out this tool for load testing. We had used SOASTA and JMETER in past. Our main reason to consider Gatling is following:

I tried WebLoad it's a pretty neat tool. It comes with and test script IDE which allows you to record user action on a website. It also draws a graph as it perform stress test on your web server. Try it out, I highly recommend it.

Trying all mentioned here, I found curl-loader as best for my purposes. very easy interface, real-time monitoring, useful statistics, from which I build graphs of performance. All features of libcurl are included.

Blaze meter has a chrome extension for recording sessions and exporting them to JMeter (currently requires login). You also have the option of paying them money to run it on their cluster of JMeter servers (their pricing seems much better than LoadImpact which I've just stopped using):

You asked this question almost a year ago and I don't know if you still are looking for another way of benchmarking your website. However since this question is still not marked as solved I would like to suggest the free webservice LoadImpact (btw. not affiliated). Just got this link via twitter and would like to share this find. They create a reasonable good overview and for a few bucks more you get the "full impact mode". This probably sounds strange, but good luck pushing and braking your service :)

c80f0f1006
Reply all
Reply to author
Forward
0 new messages