An example program for the blog post The X-Files: Controlling Throughput with rate.Limiter, demonstrating various techniques for rate limiting an HTTP service via middleware.
go get github.com/rodaine/x-files-rate
Each rate-limiting middleware can be tested with ever-increasing RPS via vegeta using a customized vegeta test harness. The target names for the middleware can be found in middleware.go
. Results are printed to stdout and also stored in ./results/{{target}}.csv.
./run.sh # defaults to no rate-limiter
./run.sh ticker # targets the "ticker" middleware
The output CSV can be converted to SVG graphs using gnuplot. The SVG files are persisted in ./results/plots/{{target}}.svg.
./plot.sh ticker