Thursday, January 20, 2011

Web performance tool, simply and quickly: Pylot

Here's a tool I've used a few times, and each time it delivered what I wanted with minimal fuss. And in the world of development tools there's something to said about that. It's a simple straightforward http request/response performance/timing tool. But one that packs enough features to be useful in a variety of situations.




Don't ask me why the name is Pylot--I haven't bothered to look. What I do know is that when I look at other performance testing tools they do everything and more, but with the cost of greater complexity in configuration and in use. And that's why I come back to Pylot.


Pylot is conceptually simple and correspondingly easy to use.


You'll need to install python to run it. After unzipping the latest greatest archive, add your testing target to testcases.xml and do the following:


python ./run.py --agents=4 --duration=30


An example of a portion of the output looks like (taken from a real site supporting cached dynamic content, test was performed with 200 agents over 60 seconds):


report generated:  07/30/2010 19:58:51
test start:   07/30/2010 19:57:36
test finish:   07/30/2010 19:58:48

Workload Model

test duration (secs)72
agents200
rampup (secs)0
interval (millisecs)0

Results Summary

requests921
errors0
data received (bytes)18839055
Response Time (secs)Throughput (req/sec)

avg14.663
stdev12.712
min3.832
50th %12.161
80th %12.601
90th %13.882
95th %20.647
99th %74.332
max74.838

avg12.792
stdev1.823
min6
50th %13
80th %15
90th %15
95th %16
99th %16
max16
That's a snippet--there's more output than that.


This will generate statistics that are found in the results directory of the fastest, slowest, standard deviation (variance), etc. of the specific tests. Additional, more complex tests may be scripted in the testcases.xml file.


You can grab your own data set of course and pipe the data to a preferred plotting package, 'cause if you are like me you would rather take the raw data and generate your own plots.


Finally just to give you a flavor of the command line options available:


usage: ./run.py [options] args
-a, --agents=NUM_AGENTS     :  number of agents
-d, --duration=DURATION     :  test duration in seconds
-r, --rampup=RAMPUP         :  rampup in seconds
-i, --interval=INTERVAL     :  interval in milliseconds
-x, --xmlfile=TEST_CASE_XML :  test case xml file
-o, --output_dir=PATH       :  output directory
-n, --name=TESTNAME       :  name of test
-l, --log_msgs              :  log messages
-b, --blocking              :  blocking mode
-g, --gui                   :  start GUI
-p, --port=PORT             :  xml-rpc listening port


So, as you can see, there are controls for the number of concurrent requests, test duration, test interval etc. Further controls on the specific tests are configured via the testcases.xml or globally via the pylot.py file--but you can read the getting started guide to get all this and more.


A good simple performance framework that can be used with a minimum of fuss! Me gusta mucho!

No comments:

Post a Comment