pummel
- http load testing tool
pummel step
[options] [url-file]
pummel limit
[options] [url-file]
pummel benchmark
[options] [url-file]
pummel analyze
pummel help [<command>]
Pummel is an HTTP load generation and measurement tool. It is designed to help find the concurrency limits of an HTTP server relative to a specified latency latency at a given percentile. For instance, the incantation:
pummel limit --percentile 99.9 --target 50 ./urls.txt
would search for the highest concurrency level which will keep the 99.9th percentile response times below 50 milliseconds.
Alternately, pummel may be used for exploratory testing. The step command is particularly useful for his, such as:
pummel step --percentile 99.9 --step 'c * 2' ./urls.txt
will double the concurrency for each run, printing the concurrency level, latency at the specified percentile, mean latency, and requests per second at that concurrency level.
Pummel takes as input a sequence of URLs, one per line, either on standard input or specified in a urls file as a command line argument. It will build a FIFO queue of requests which will be pulled off and executed concurrently by the program.
The limit
command takes a list of urls from either standard in or
from a file specifed as an argument to the command.
-l
, --labels
-m
max-requests, --max
max-requestsMaximum number of requests to execute
-p
percentile, --percentile
percentilePercentile to try to target, default is 99th percentile
-s
start, --start
startInitial concurrency level, defaults to 100
-t
target, --target
targetTarget 99th percentile threshold, default is 100
The step
command takes a list of urls from either standard in or
from a file specifed as an argument to the command.
-l
, --labels
Show column labels
-L
limit, --limit
limitconcurrency limit to stop at, default is 2147483647
-m
max-requests, --max-requests
max-requestsMaximum number of requests to execute
-p
percentile, --percentile
percentilePercentile to try to target, default is 99th percentile
-s
start, --start
startinitial concurrency level, defaults to 100
--step
step-functionExpression used to calculate the next concurrency level. The default
is c + 1
which increments the concurrency level by 1. It accepts
either an MVEL Expression or
Clojure fucntion function. In the MVEL case
the input level is contained in a variable named c
, in the clojure
case it will be the lone argument to the function.
The benchmark
command takes a list of urls from either standard in or
from a file specifed as an argument to the command.
-c
concurrency, --concurrency
concurrencyConcurrency -- how many requests to keep in flight at once
-m
maxRequests, --max
maxRequestsMaximum number of requests to execute
-r
, --report
report basic stats on stderr when finished:
The analyze
command takes a list of times, in millis, one per line
on standard input. This is useful in combination with the benchmark
command.
Pummel requires Java, at least 1.6, be installed. The executable is actually a clever mangled executable jar file.
Precompiled pummel binaries are available
as a deb or as a
binary executable. If you
download the binary executable you will probably need to set it chmod
+x pummel-0.0.2
.
Source is available on github and
uses Apache Maven to build. To build the
dpkg and binary use mvn package
Pummel is Copyright (C) 2012 Ning, Inc.
Pummel is available under the Apache License, Version 2.0