One of our clients is a news site that uses DotNetNuke and uses the HouseMenu skin component for navigation. The site has recently become very large due to just a very large amount of content they have placed on the site. They have the HouseMenu component installed on every page with -1 set as root to display the structure of the entire site. They also have the IsRecursive option set to True.
As the site has grown, we have noticed a higher and higher load being placed on the server with every page load. Now, each page takes several seconds to load and during which time the CPU usage of the server shoots to 100%. I have put a monitor on the SQL server and I noticed hundreds of queries being run with every page load. In trying to track down the issue, I disabled the HouseMenu totally and instantly the site's load time went down to almost nothing and almost no load was placed on the server during each page load.
I also noticed if I set the IsRecursive option to false, it loads very fast with very little CPU usage. I believe that with each page load, the menu is trying to iterate through each node in the entire site and seems to run a SQL query with each iteration. Obviously, that is a problem since the site is so large.
a) Is this the way HouseMenu should behave?
b) Is this a known bug/design flaw?
c) We only really care about the root level and first two levels below that. Is there a way to limit how deep into the site structure the menu iterates?
I'm just wondering if anyone else has seen similar problems or knows of anything I can try to fix this problem. We can't have every single page load using 100% obviously, nor have a site that runs so slow it takes several seconds to load a single page.
If there is anything else that you need to help troubleshoot this issue please let me know. We are running DNN 4.0.3 w/ HouseMenu 1.3. This is a pretty low traffic site as of now, and it is on a dedicated server with no other sites running.
Thanks,
Chris Miller