For comparison I ran openload against my blog page (http://lazutkin.com/blog/). It is 38012 bytes at the moment. I don't know how many db transactions required to build it, but with cache it's a moot point anyway. Incidentally I use "file:" cache. The site is hosted with DreamHost --- cheap community hosting company.
Over Internet using my home connection I got: Total TPS: 12.54 Avg. Response time: 0.781 sec. Max Response time: 1.641 sec Total Requests: 503 Total Errors: 0 With average ping ~40ms, it correspondes to ~400kbps, which looks about right order of magnitude. Judging by your times you probably used "localhost" for load testing, or you had some intermediate caching, or you have really fat connection to get 24k in 20ms. ;-) I don't know what the exact problem is, but I would suggest to check basic stuff first: check footprint (maybe swapping is an issue); check database speed (e.g., using Django's database API with some rudimentary timing program); if you run db and apache/django on the same server, try to separate them (sometimes there is an interference between programs); to get realistic test results, try to run openload from separate computer (or several copies of openload from separate computers for even more realism). If everything works as expected, you probably found a bug in cache subsystem and we need to find a way to reproduce it. BTW, could you cut'n'paste your MIDDLEWARE_CLASSES? The order is important. Thanks, Eugene