I'm having my first attempt at stress testing a simple django web app running from gunicorn and nginx which I’ve put on a small 256MB Rackspace Cloud server.
Using httperf, I increase the number of connections per second until I start getting errors e.g.
httperf --hog --server=localhost --uri=/myapp --timeout=10 --num-conns=2500 --rate=25
I find that for a simple almost static page from django I can get about 35 req/sec before errors start being thrown.
For a more dynamic page which requires a database lookup and some more processing, I can get about 25 req/sec.
Originally I was only using 1 gunicorn worker, but increasing to 4 workers (I think my cloud server has 4 cores) didn’t seem to make any difference (it still starts throwing errors above 25 req/sec).
Do these results sound about as expected considering this is running on such a small (256MB) server?
Also, are there any changes I could make to improve the throughput?