Load testing

In this context, we would like to suggest two tools: Siege and httperf.

Siege is multi threaded and will quickly reveal weaknesses in your stack with regards to read operations.

httperf is also good for providing load, but excels with its scripting support. This allows you to write session scripts (i.e. what a given users would issue of GET, PUT, POST and DELETE operations). Furthermore, it can replay your Apache access logs, giving your tests real user traffic patterns as opposed to looping through a list of URLs sorted in alphabetical order.

Here is an example of running httperf. The call will create 1000 connections with 20 requests in each, establishing 100 connections per second. Please see man httperf for an detailed explanation of the parameters:

$ httperf\
  --hog \
  --server myserver.com \
  --num-conn 1000 \
  --ra 100 \
  --num-calls=20