Load testing of MVC + Django web application
4 simple web applications (ASP.Net, ASP.MVC, MVC + Django, Bistro+Django) were load tested. Each of them consists of 2 pages (index and about) and all of them are as similar to each other as it was possible to do. See branches IfFor ( if and for tags were added to template ) and Vars ( large amount variables was added to make application more complex) for view's and controller's modifications.
These application can be found at :
The main aim was to compare perfomance and try to find bottlenecks in NDjango. While some changes were made, application was load tested to analyze how those changes impacted the perfomance under stress.
JMeter was used as a load-testing tool. Load-tests ran locally (it means that we had the agent and controller on the same machine) while having remote web-server under-stress.
Controller's machine configuration:
- OS Windows Vista Ultimate SP2 32 bit
- Processor Intel(R) Core2 Duo CPU (3 GHz,3 GHz)
- RAM 2GB
Web-server's machine coniguration:
- OS Windows Server 2008 Enterprise SP2 64 bit
- Processor Intel (R) Core2 Quad CPU (2,66 Ghz,2,66GHz)
- RAM 4GB
- 150 virtual users (threads), 100 loops (each consists of 2 requests: requests to home and about pages)
- 150 virtual users (threads), 1000 loops (each consists of 2 requests: requests to home and about pages)
- Compare NDjango with other technologies
|Application||Server CPU||Total requests||Avg response time(ms)||Throughput(req/sec)||Deviation(ms)||Contention rate|
In MVC+Django app contention rate depends on templates' updates from disk (if updates are enabled contention rate is greater) For more info see File:LoadTest review.zip
- Regression tests' results
Analysis and conclusions
The avg page response time and throughput in Ndjango (even if you use template inheritance) are similar to these values of ASP.Net application. And sometimes the statistics of NDjango application is better (less avg response time and larger throughput). But the avg page response time of ASP.MVC pages is larger and therefore throughput is less! This situation reproduces each time I run load tests. NDjango release 0.9.1.0 seems to be more stable under stress!