Web application/site speed is a major factor in whether it will achieve its marketing goals. Ultimately, it doesn’t matter how good your content, service or product is, if your web property is slow, most people won’t come back.
Luckily, we have tools to give us a sense of how much traffic our sites can handle and lots of them are free or open source. Here are some of my favourite tools for monitoring how a site or application performs:
ab was my first real performance testing tool and it keeps a special place in my toolkit. Bench is best used for benchmarking – it is a great way to figure out how many requests per second your application can handle. With some I consider performance a feature so I run it at my staging server level and make sure my performance either improves or drops within an acceptable margin before I deploy any changes to production.
The only drawback that I see to Bench is that it is rather obtuse for non technical people. It is dead simple and if you go through a few tutorials, you can get it. But it’s an intimidating place to start, relying on users to write their own shell scripts to accomplish things that are built into more featured tools.
Locust is a special piece of software – it has become an indispensable part of my software development process. Hell, I have used it on my last five major products, including Changeakid.
Once you understand the name, you know everything you need to know to start using Locust. With Locust, locusts (or users) will swarm your website. You use code to define what each locust does, so for example, you can have five users checking out your blog, three signing up, eight signing in and five posting photos. As you change the number of locusts, you can get a good sense of how much traffic your performance can handle before it crashes. And if you’re interested in learning more about your application, it’s an excellent way to simulate real use and find out where the bottlenecks are.
My favourite features of Locust are how easy it is to scale and how you use Python to simulate as many users doing as many complicated things as you like. Locust is built to be highly distributable so you can spin up as many instances as you need to create as many concurrent users as you want to test. And since all the tests are written in Python, it’s easy to read and you can check all your performance tests into version control.
The downside of Locust is that this is the least marketer friendly tool on this list. ab is complicated, but Locust? The code is all written in Python and Python is easy to read and use. But this is a level above ‘hello world’ Python and I’m not confident that your average marketer could install and use Locust, particularly if they need to simulate massive amounts of traffic and build clusters of Locust machines.
Another Apache project, JMeter is an excellent way to load test applications and measure performance. Of all the choices on this list, JMeter would be the easiest for a non-technical person to download, install and start using.
JMeter is graphical (though it has a CLI mode for purists) so setting up your first tests is easy. It is complicated enough to simulate real users while being simple enough for less technical people to use. This is an incredible feature because it means that less technical people can use it to make sure their sites are running fast enough, especially under major amounts of load.
The downside is that I don’t find it particularly easy or intuitive to share tests amongst teams of users. It’s excellent if you’re a solo practitioner tracking a site’s performance. But if you work with a team, it’s not as easy to save or share tests amongst groups of users. It’s not impossible, it’s just not as easy as it should be.
I have introduced three tools that fit remarkably different use cases.
ab is technical enough to have a learning curve, especially for people who aren’t comfortable with Linux or command line in general. But it’s simple enough that if non-technical people invest a little in learning, that investment will give them the capacity to run complicated testing. Because of the technology it is written in, ab makes it easy to share tests amongst different members of a team.
Locust.io is a wonderful tool for running complicated tests against complicated applications. It is highly powerful but it would be the least accessible to non-technical people.
JMeter is the best for non-technical users. It is all graphical, relatively easy to configure and easy to use for single endpoint testing. But this simplicity makes it a little more difficult to share with other members of a team.