Stress test on Django makes it slow while there are free system resources
Probably caching is your answer. I don't know how Django runs on Apache as I run a Gunicorn setup but it makes round trips for every database call. 
If you institute some memcache to handle common result sets you should see a large improvement so you don't have to make trips for each request. 
Also, 50 concurrent connection requests at a time seems like a lot. Try to tone it down to 5 or 10 then 25 instead of starting at 50.
Just my opinion.
Today I was doing a stress test to a new Django (1.5.4) running on an Ubuntu Server 12.04 site before going into production and I've found some unexpected results:
Doing 50 requests per second, htop showed a CPU usage of ~50% and RAM also ~50%. I'm not currently using Django cache and doing a normal browser request while doing the stress test it took ~30s to load each page (without any load it takes <= 2s). The server didn't crash during the test, but I dont understad why if there are almost 50% of the resources free it lasts so much... I expected to see a higher CPU and memory usage!
So, my question is: Is there any Django default setting that limits the number of requests per second? Or does Apache or mod_wsgi have any kind of limit? Do I have to change some MySQL config?
(Note: I'm a software engineer, not sysadmin).