This is a small project to test the performance of Flask and gunicorn in different constellations, but also the variations between different performance benchmarking tools.
Server | Flask (debug) | Flask (production) | gunicorn (Flask) | Express |
---|---|---|---|---|
Apache Bench | 81 ms | 86 ms | 47 ms | 53 ms |
boom | 329 ms | 323 ms | 352 ms | 324 ms |
locust.io | 300 ms | 302 ms | ||
siege | 300 ms | 302 ms | ||
httperf | 0.6 ms | 0.6 ms | 0.7 ms | 0.2 ms |
wrk | 73 ms | 78 ms | 38 ms | 12 ms |
For a quick test you can use either Apache Bench (ab
) or boom
ab -c 100 -n 1000 http://localhost:8000/login
boom -c 100 -n 1000 http://localhost:8000/login
httperf --server 127.0.0.1 --port 8000 --num-conns 10000
siege -c 100 -r 10 http://localhost:8000/login
wrk -c 100 -d 5s http://127.0.0.1:8000
Installed as
- Apache Bench (
ab
):brew install homebrew/apache/ab
- boom:
pip install boom
- siege:
brew install siege
- locust.io:
pip install locustio
- httperf:
brew install httperf
- wrk:
brew install wrk
gunicorn --error-logfile - -w 4 app:app
Run
locust --host=http://locahost:8000
Go to http://localhost:8089 and use the interface to start the testing.