Stress testing a webserver or a web application

There're a number of tools for benchmarking webserver throughput. Here're a couple of them:
  • ab - Apache HTTP server benchmarking tool (you can find this bundled with the apache2-utils Debian package)
  • Flood (there's no Debian package for this, but I've written a short tutorial on how to compile it on Debian
  • Siege (it is available as a Debian package)
  • JMeter (this is the only one on this list that has a GUI - I think it's used for assembling test profiles, but I did not try it)
ab seems to be the easiest to use, however it's the simplest too. Smile It supports only single-URL mode (no URL lists, no POST requests, cookies, etc.), but this was the only one that allowed me to simulate over 400 concurrent visitors. All the other tools have a lot higher memory requirement for a single worker/thread/visitor.

My second choice is siege since installation takes a simple apt-get install siege and it's almost as feature-rich as flood. The latter is a bit more precise in measuring various timings and I like its design better (eg. test profiles stored in XML files, etc.), however unfortunately it has no Debian package so you've to build it yourself.

Since JMeter involves use of a GUI, I didn't bother to try it on a remote server (since our office has not enough bandwidth for a stress test).