Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Java
branch: master

This branch is 15 commits ahead, 1 commit behind brianm:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src
.gitignore
LICENSE
README.md
pom.xml

README.md

pummel(1) -- http load testing tool

SYNOPSIS

pummel step [options] [url-file]

pummel limit [options] [url-file]

pummel benchmark [options] [url-file]

pummel analyze

pummel help [<var>command</var>]

DESCRIPTION

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.

FILES

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.

COMMANDS

limit

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

step

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 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.

benchmark

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:

analyze

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.

DEPENDENCIES

Pummel requires Java, at least 1.6, be installed. The executable is actually a clever mangled executable jar file.

INSTALLING

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

COPYRIGHT

Pummel is Copyright (C) 2012 Ning, Inc.

Pummel is available under the Apache License, Version 2.0

Something went wrong with that request. Please try again.