# Stresser This gem is a wrapper around the httperf command which can put all types of loads on a webserver. It's like apachebench, but you can replay log files, define sessions, and so forth. This gem calls httperf many times with different concurrency settings and parses httperf's output into a csv file, that you can then use to visualize your application's performance at different concurrency levels ## Sample graphs Here's a collection of graphs that this gem currently creates (though you can create your own by creating a YML file that maps columns from the generated csv file to labels for the image). ## Installation First install the gem $ gem install stresser ## Configuration Please refer to the supplied `sample.conf` on how to configure stresser. Also, see `man httperf` as all options in `sample.conf` beginning with `httperf_` go directly to the httperf commands. ## Examples ### Stresstest You can call stresser from the command line: $ stresser your_app.conf -o /tmp/stress/result.csv ... lots of httperf output... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Great, now create a graph with stresser-grapher -o /tmp/stress /tmp/stress/result.csv $ You will see the output of the httperf commands that are issued, and a full report will be written to result.csv. ### Creating graphs When you're done, you can create a graph of your testrun like this: $ stresser-grapher -o /tmp/stress /tmp/stress/result.csv Generating stati_per_second to /tmp/stress/2010_10_25_17_28_stati_per_second.png... Generating replies_per_second to /tmp/stress/2010_10_25_17_28_replies_per_second.png... Generating errors to /tmp/stress/2010_10_25_17_28_errors.png... Generating connection_time to /tmp/stress/2010_10_25_17_28_connection_time.png... Generating cpu to /tmp/stress/2010_10_25_17_28_cpu.png... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Great, now open the images with open /tmp/2010_10_25_17_28*.png $ ### Log generator As a little helper to generate log files defining some session workload that requires different urls, `stresser-loggen` is supplied. Just create a log template named `mylog.tpl` like this # My session workload /users/{{n}} /images/foo.gif /images/bar.gif /users{{n}}/dashboard And then use `stresser-loggen` to reproduce these lines as often as you like: stresser-loggen mylog.tpl 100 > mylog.conf The `{{n}}` will be replaced with the numbers 0-99. ## Tests Run `rake spec` to run them tests. Currently, only httperf's output of a session based replay log is parsed, but I will add more. ## Thanks Stresser is based on igvita's autoperf driver for httperf.