Tuesday, 9 October 2012

Using Amazon to scale JMeter

Most of the art of is discovering the right question. Once you know the question, the right approach almost always becomes clear.

For example, when we wanted to know how a app scaled, we picked . This worked well, producing the solid statistical evidence we were searching for, to be graphed and digested within a report.

Last month, we were asked to load test an application, to discover whether the audience could be safely let loose to play at a demo: Would the user experience be good enough at the expected load?

For subjective criteria, hard numbers are often tricky to interpret and may be misleading. Loading the system, then allowing users to evaluate the perceived performance is often a more revealing route. simulates complex user interactions well, so running one scripted instance per expected user seemed a promising strategy.

A good plan in principle, but one that needed 40 spare machines and big fat pipes. Time for .

Taking advantage of 's free tier, we opted to avoid the API learning curve by hand crafting.

  1. Through the web interface we
    • created vanilla Ubuntu images, and
    • distributed across the world, avoiding the per-region limits.
  2. Installed (JMeter and the load simulation) over ssh, scripting in multi-threaded Ruby to avoid IO bottlenecks.
  3. Started the simulations.
  4. Played with the app, evaluating subjective performance at load.
  5. Remembered to destroy all instances in every region

All very smooth :-)

1 comment:

  1. Excellent Post. Also visit http://whiteboxqa.com/#performance.php