iFinity Blogs 

Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

May 21

Written by:
Friday, May 21, 2010 5:13 PM  RssIcon

A question that I field on a regular basis is ‘what performance implications are there for switching off page extensions on my DotNetNuke site?’.   If you peek around various posts and blogs, you’ll see dire warnings from people predicting the end of your server as you know it.   The main problem people have is that, when you switch off page extensions, all of the processing for all requests on the server are routed through the ASP.NET runtime, which has to serve up not only the dynamic ASP.NET pages, but all of the static content (js files, jpg files, css files et al) as well. 

My response to people has always been : switch it on and see what happens,  if your site becomes too slow then turn it back off again.  My advice tends to be of a practical nature in this respect.  My own site has been running without extensions for years, and while it is known to have the occasional hiccup, that’s never been to do with the missing .aspx on the Urls.

However, I decided to do a little bit of comparison with a standard DNN site and one with the Url Master module installed, so I could point to some empirical data when asked this question, plus give others a jumping off point to doing their own research.  As a side benefit it would give me a baseline performance comparison between the latest Url Master and standard DNN Friendly Url Provider.

Performance Criteria

Before starting, I decided the criteria I would measure across to compare.  These would be tracked over the test run and compared with each scenario.

  • Memory Usage – looking for average and peak memory usage
  • Open threads – looking for peaks in open threads
  • Time to first byte – measures how quickly the application can send back the request
  • Time to last byte – measures how quickly the application finishes the request
  • Requests per second – measures the rate at which the web server is handling requests

Scenarios

  • Plain DNN 5.4 Installation
  • Plain DNN 5.4 Installation with Url Master
  • Plain DNN 5.4 Installation with Url Master and no page extensions

Testing Platform

The testing was done on a DotNetNuke 5.4.2 installation, with the standard skin.  The installation contains 3 portals and 98 tabs across the 3 portals.   The Installation was standard apart from the Blog and Forum modules installed, and the Url Master module where tested.

The requests were collected using Microsoft Fiddler, and was equivalent to a click on each page of the first portal, which results in approximately 162 requests to the server, across all style sheets, images, css files and actual DotNetNuke pages.

The tests were submitted to the Microsoft WCAT tool (Web Capacity Analysis Tool) using the WCAT Fiddler Extension.  These were done on a Windows 7 development machine running IIS7 in integrated pipeline mode.    WCAT was configured to act as 10 concurrent clients submitting the stored requests continually for 30 seconds.

The testing configuration was designed to test a short burst of concurrent requests on the server, not to test the absolute limits of the application or the hardware.  Probably 95% of all the DotNetNuke sites I have seen fall into the type of performance envelope I’m using.  The main principle here was testing relative changes – when swapping out the standard DNN Friendly Url Provider/ Url Rewriter, what is the change in performance?

Each scenario was tested with 6 test runs, including one where the IIS service was restarted before starting, and one where the Application Pool was recycled before starting.  This gave coverage of different scenarios and was designed to show the difference between cold starts and hot running situations.

The data were obtained using a combination of both the WCAT metrics, and using the Windows Performance Monitor, which provided information on memory usage and open threads.

Performance Monitor Screenshot

The above picture shows the performance counters during a test run.

Testing Results

If I were putting a ‘media talking point’ out for this article, it would be : ‘Url Master outperforms standard DotNetNuke Rewriter’.  However, in reality the testing was probably too limited in scope to come up with such a headline.  The tests did show that the Url Master module had both better response times and throughput than the standard DotNetNuke Url Rewriter, and was comparable in memory usage.

The main purpose of the testing, however, was to test whether or not the switch to ‘wildcard mapping’ or, in other words, removing the .aspx from the Urls has any measurable performance effect.  Remember, the main issue that most people have with the routing of all requests through the ASP.NET runtime is that it will result in slower performance than serving those files through the ‘Native’ IIS static file handler.

The surprising result for me was that the ‘no page extension’ scenario actually processed requests faster than when the .aspx extension was mapped to the asp.net runtime.  This is probably due to the fact that IIS7 in integrated pipeline manages this situation very well, and the extra speed can just be put down to random differences in the samples.  A more safe statement would be that no discernible effect could be found.

Requests per Second

Requests per second measures the amount of requests the web server is handling, and is a measure of throughput of the server.

Requests per second graph

As you can see from the data, the Url Master module changes the amount of requests per second that the installation can handle.  In this graph, a larger value is better. This is likely due to the level of caching used in the design.  The Url Master module caches both the index of pages for Url Rewriting purposes, and it also caches the list of Urls used when generating Urls for the output Html of a DNN page.  Thus most of the usage of the module works from in-memory caches, and restricts the amount of calls to the database.

Average time to first byte

The Average time to first byte metric shows the responsiveness of the web application to requests.  It measures the time taken before the request is submitted to the server, to when the request is received.   Note that this testing took place on the same server as the web application, so there is no network latency involved.  What we are measuring is the time taken to process the page and respond to the request.

Average Time to first byte graph

This metric shows that the Url Master improves the response time of the DotNetNuke application in the tests run.  Again, my guess is that the way the module rewrites the rules is faster than the standard DotNetNuke Friendly Url Provider, again probably because of the caching.

Full Data Set

Below is the full dataset of the results of the tests run.   You can peruse the information and see where the differences show up. 

Test Setup

Memory Usage (bytes)     Avg Open Threads Requests / second Time to first byte milliseconds  
  avg min max     avg max 50%
Standard DNN 28,288,562 17,888,920 42,168,896 59 217.07 479 4524 31
  32,381,297 19,449,704 54,097,768 60 218 473 4540 16
  31,793,653 20,735,960 62,305,244 61 427.33 245 4586 0
  32,134,567 19,666,056 47,637,008 62 217.63 475 4665 16
iisreset 18,380,881 6,780,652 37,184,816 40 446.5 237 4602 15
new wp 29,902,197 7,066,944 105,284,592 36.8 490.87 188 5288 15
  28,813,526 15,264,706 58,113,054 53 336.23 349.50 4700.83 15.50
kilobytes 28,138 14,907 56,751          
                 
Url Master 26,611,569 9,997,464 49,498,544 56.14 542.23 183 3588 0
  21,787,730 8,263,072 69,673,616 39 314.97 331 3557 16
  23,112,331 13,014,831 59,858,528 39 474.47 218 2965 0
  24,019,964 12,914,032 60,035,168 40 400.7 259 3464 0
iisreset 43,609,843 7,542,158 133,115,904 37.492 422.67 222 4290 15
new wp 37,905,787 13,054,040 96,584,112 34.98 553.33 168 4056 0
  29,507,871 10,797,600 78,127,645 41 451.40 230.17 3653.33 5.17
kilobytes 28,816 10,545 76,297          
                 
Url Master / no .aspx 24,679,225 18,365,184 38,196,888 51 380.13 271 2028 16
  31,766,699 17,076,128 99,749,916 43 449 224 4868 16
  31,366,464 21,458,184 53,405,976 44 450.13 229 2605 0
  3,202,372 18,625,760 69,994,176 44 482 215 3432 16
iisreset 26,119,487 5,265,854 69,994,176 40 486.97 180 4118 16
new wp 34,893,992 13,985,840 95,012,592 36 488 180 4212 16
  25,338,040 15,796,158 71,058,954 41 471.07 216.50 3543.83 13.33
kilobytes 24,744 15,426 69,394          

Conclusions

There are two main conclusions I found from this testing:

  1. In IIS7 integrated pipeline, running with no page extensions makes showed no measurable difference in performance
  2. The Url Master module showed better performance than the standard DotNetNuke Url Rewriter/Friendly Url Provider

These are interesting results for me, and I may expand this testing to cover different scenarios such as an IIS6 server, or to greatly increase the sample size of the requests (I’m sure a statistician would scoff at my sample size of 7).  However, they are pleasing for me as I do spend a lot of time performance optimising code and figuring out ways to make it run faster, given that the Url Master code runs every single time a page is requested in DotNetNuke.

If you see an obvious error, or repeat this testing and find a different result, please let me know via the comments.

Tags:
Categories:
Location: Blogs Parent Separator Crafty Code

13 comment(s) so far...


Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

I tend to agree with the pragmatic approach to issues like this and set up things the way I'd like them to be and change course should something not go the way I planned. That said, these numbers are interesting and very encouraging. Nice post and keep up the great work!

By Ian Robinson on   Saturday, May 22, 2010 12:03 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

No surprise to me that Url Master out preforms the stock DNN URL rewriter. Your module is the first thing I install on all new sites that I build. Keep up the good work Bruce!

By Nathan Rover on   Saturday, May 22, 2010 1:03 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

This is easily one of my most favorite DNN blog posts of the year! Especially since I have become a loyal customer using URLMaster. :)

I would absolutely love to see two follow ups to this blog post. One for IIS6, and another for IIS7 in compatibility mode.

By Will Strohl on   Saturday, May 22, 2010 3:08 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

I've known this for a while now, URLMaster gives a much better performance than standard DNN URL rewriter with. Who in the world doesn't know that? :-)

Looking at performance logs from my own site, swapping out the .aspx with no extension (using URLMaster, IIS6, IIS7) does not cause performance drop except for one scenario... malicious users who know what they are doing can cause unnecessary capacity drop (which is addressable separately though) simply because all the requests whether right or wrong now go through aspnet_dll

By Subodh Shakya on   Saturday, May 22, 2010 3:30 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

Can we see performance for IIS 7 App Pool running classic mode?

By Scott Allender on   Saturday, May 22, 2010 5:08 AM
Gravatar

when will hosting companies make this a user-accessible setting?

My main annoyance when trying to set people on hosting plans up with extension-less urls is that the support personnel treat this as a special configuration and try to charge for it. From my own experience, I've had to talk the good people over at PowerDNN out of charging me $50, arguing that there's no way I'm paying $50 for a setting that takes 10 seconds to change. It would be nice if the hosting control panels exposed IIS mappings to the users...

By Andrew on   Wednesday, May 26, 2010 12:00 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

I would be interested in seeing DNNMasters URL rewriter solution added into the mix. I've used all 3 solutions and URL Master wins hands down. When I tried the DNNMasters solution my response times went through the roof and I ended up disengaging theirs. I love extensionless, no going back for me...

By JT on   Saturday, May 29, 2010 5:07 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

@Andrew : I agree, but at least PowerDNN agrees to change the setting. There are many hosting companies that refuse to change the setting on the basis that 'the server will suffer performance degradation for all sites' - which is a case of people clearly not understanding what the change involves.

@JT I don't have access to and have never looked at the DNNMasters product so I don't know what features or performance it has. I have had quite a few people switching to the Url Master module from it, so far all reports have been positive which is what matters to me.

By Bruce Chapman on   Saturday, May 29, 2010 8:02 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

I am using URL master on both IIS 6 and IIS 7.5 and I do not have any performance issue on either. The average loadtime for my www.fowara.com which uses URL Master and is in IIS 6 takes about .4s which is faster than 99% sites according to Google webmasters tool.

Keep up the good work.

By Tareq on   Thursday, June 03, 2010 3:27 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

My hosting provider is PowerDNN and they advised that I not disable extensions. They wrote "While technically possible, DNN uses aspx to function, and we advise against disabling extensions unless absolutely required." Can someone explain to me, technically, why they would advise against it? I would like to use no extensions, but want to ensure that making the decision to have them turn off extensions is the correct decision.

By Shaun on   Friday, June 04, 2010 11:22 AM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

@shaun : I'd just ask them what the specific issue is, and see whether that can be overcome. It could be a fear of the unknown, it could be a valid technical reason. I do know of several PowerDNN hosted DNN apps that don't use extensions, so it might be a matter of who you talk to. It's very common in the shared hosting industry to have a policy of not switching off extensions, which is why I use VPS hosting. With a shared host, they have to put sociability and reliability as priority number 1 so one badly written application doesn't endanger all others on the same host.

By Shaun on   Friday, June 04, 2010 1:09 PM
Gravatar

Re: Comparing Url Rewriting performance with DotNetNuke and Url Master with no .aspx extensions

@Tareq: Yes, your site is impressively fast! Who do you host with?

Out of interest, I ran YSlow on your site - there are some very simple changes you could make to boost your score from 72 to over 80 - for example - compressing/mergin and caching all that CSS and JS (PageBlaster does this with one setting)

By Rodney on   Tuesday, June 15, 2010 3:53 AM
Gravatar

can we redirect a specific type of requests to no .aspx extensions?

I would like end user to type mysite.com/toystory3 to go to a video link like this: mysite.com/content/linkclick.aspx/fileticket=******&tabid=333$mid=333322. The video link is a static url.

With DNN Firendly Url, you have to add .aspx extension to the short url.

Can the free Ifinity Friendly url provider do this? Or I have to buy the advanced version?

thanks,

By heguangm on   Thursday, August 26, 2010 11:36 PM

Your name:
Gravatar Preview
Your email:
(Optional) Email used only to show Gravatar.
Your website:
Title:
Comment:
Add Comment   Cancel 
Bruce Chapman
Hi, I'm Bruce Chapman, and this is my blog. You'll find lots of information here - my thoughts about business and the internet, technical information, things I'm working on and the odd strange post or two.

 

Share this
Get more!
Subscribe to the Mailing List
Email Address:
First Name:
Last Name:
You will be sent a confirmation upon subscription

 

Follow me on Twitter
Stack Exchange
profile for Bruce Chapman at Stack Overflow, Q&A for professional and enthusiast programmers
Klout Profile