pummel step
[options] [url-file]
pummel limit
[options] [url-file]
pummel benchmark
[options] [url-file]
pummel analyze
pummel help [<var>command</var>]
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
: Print column labels in the output -
-m
max-requests,--max
max-requests: Maximum number of requests to execute -
-p
percentile,--percentile
percentile: Percentile to try to target, default is 99th percentile -
-s
start,--start
start: Initial concurrency level, defaults to 100 -
-t
target,--target
target: Target 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
limit: concurrency limit to stop at, default is 2147483647 -
-m
max-requests,--max-requests
max-requests: Maximum number of requests to execute -
-p
percentile,--percentile
percentile: Percentile to try to target, default is 99th percentile -
-s
start,--start
start: initial concurrency level, defaults to 100 -
--step
step-function: Expression used to calculate the next concurrency level. The default isc + 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 namedc
, 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
concurrency: Concurrency -- how many requests to keep in flight at once -
-m
maxRequests,--max
maxRequests: Maximum 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