Plethora
Plethora is a massively-scalable HTTP load testing tool that can be used to measure the concurrency and latency of your web-based services. Plethora can generate thousands of concurrent HTTP requests to multiple URLs in order to help you gauge your site's ability to cope with massive traffic spikes.
We would love to hear back from you! Please send us your comments and suggestions. Patches are always greatly appreciated.
Requirements
Plethora currently has very low base requirements. A client system
merely needs a functional version of
libevent
in order to operate. For high performance, we recommend using
a system that supports epoll()
(eg. Linux 2.6.x or later), /dev/poll
(eg.
modern Solaris) or kqueue()
(eg. modern FreeBSD/Darwin).
Plethora has been tested under the following operating systems, and likely works on many others:
- Linux 2.6.x
- FreeBSD 4.x, 5.x, 6.x
- Solaris 10
- Mac OS X Tiger and Leopard (Darwin 8.0.0+ and 9.0.0+)
Please let us know if you are able to successfully compile and run Plethora on any other platforms.
License
Plethora is available under the terms of the Apache License, Version 2.0.
Downloads
Version 0.2.4 (28-Jan-2009)
- Change the balancer algorithm from simple round-robin to lowest-concurrency. That means that each location will have a more equal number of concurrent connections to it, allowing faster locations to complete more quickly.
- Fixed a bug that was caused by a misplaced parenthesis, causing a short buffer that would result in buffer overflows (corrupted headers) but only in rare conditions.
Version 0.2.3 (28-Nov-2007)
- Added support for overwriting headers using the -H parameter.
- Changed default behavior so that the socket is no longer shutdown for writes on the client side after sending the headers. Some HTTP implementations (like Akami) appear to be incompatible with this behavior.
- Added support for (-o) halfopen parameter, so that we can still have the halfopen behavior if desired (where we shutdown the socket for writes on client side after sending the headers).
Version 0.2.2 (2-Apr-2007)
- Added support for checking and reporting on HTTP response failures.
- Anything 4xx or 5xx is considered a fatal error.
Version 0.2.1 (30-Mar-2007)
- Fix a bug in the location resolver that ignored the -C parameter for overriding the hostname from the test URL.
- Only print the metrics for each request when two or more -v's are used.
- Added support for ports into the -C parameter, for example:
-C www.example.com:81
Version 0.2.0 (21-Mar-2007)
- Fix non-blocking
connect()
. There was a bug that treated in-progressconnect()
attempts as being complete, which skewed the metrics and caused the next state to block until the connect completed. - Improved handling of
EADDRNOTAVAIL
which happens when we run out of client ports. This support is not yet fully tested and probably needs more work. - Added support at verbosity level 1 for printing the timing metrics (connect/read/write/close) for every request as it completes.
- Fix off-by-two error when calculating header length that would cause extra junk to be written to the request after the end of the headers.
- Add support for tracking the time until the first byte is received from the server.
- Always add the "
Connection: close
" header to requests, since we don't currently support KeepAlive requests in Plethora.