Learn More





DNN Community Blog

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

How one Blog can affect a whole site

This is a real story.

Yesterday shaun and I decided to look into reports that this site has been a bit slow over the last two weeks.  As usual my first reaction was to check the Exception Logs in the Event Viewer, as frequent exceptions are often a sign of major issues on the site, especially Database timeouts.

One frequent error was a message that indicated a problem with the "BlogFeed" page, in particular the URL used to return the consolidated feed.  This error was being logged about once every 10 secs.  When I saw that, I remembered that recently my RSS Reader (I use the Wizz RSS Extension for Firefox) had quite frequently been returning errors.

The Consolidated RSS feed makes a call to the Database for each request (I have discussed this with Antonio and recommended that this should be cached on a high priority).  This request calls a stored procedure that returns the 20 most recent posts (this is configurable in Module options but this site had the value set to 20).

When I used SQL Management Studio to analyse this stored procedure, this stored procedure took between 20 and 40 seconds to run.  Since we use the default SqlCommand timeout of 30 secs this means that quite a few of these databse requests were timing out.  I started using the Execution Plan and the Database Performance Tuning Wizard to try and figure out a better performing query.  Both of these tools basically had no recommendations short of removing information from the returned set of columns, so the clever guy in me said - If 20 requests take ~30 secs then 10 requests will take ~15 secs.

Was I wrong - reducing the number to 10 made the query take 1-2 secs.  Wow.  why such a huge difference.  I investigated further and found that 12 requests took 1-2 secs but 13 took 30-40 secs.

What was special about the 13th Blog.  This Blog was Phil's blog with a table on the different CMS systems.  The problem with this blog is that Phil copied a fairly large Excel Spreadsheet and pasted it into the HTML Editor.  Unfortunately MS Office products when they "create" html versions of their text add a huuuuge ammount of style tags.  This huge ammount of text is being returned as part of the query used for the RSS Feed and obviously takes about 30 secs.

So the solution I used was to reduce the setting on this site to return 10 blogs so that this blog would not be included.  Instead of seeing an error (due to DB timeouts) every 5-10 secs we now see maybe 1 every 15 mins.

Please: Don't get me wrong.  I have used Phil's blog as an example because it tells a story.  I found the content of the Blog very instersting and I know he struggled with how to publish the information.

The moral of this story is that simple (and unexpected things) can be impacting site performance.  Because of this large Blog, a query that is called more than 10 times a minute, takes about 30 secs to run, and will seriously impact site performance as other queries get less CPU time in the database.  A second moral of this story is that this content should have been cached - it is a classic example of content that is fairly static - Blogs are infrequently updated - in the order of hrs and days not minutes.



Comment Form

Only registered users may post comments.


2sic Daniel Mettler (124)
Aderson Oliveira (15)
Alec Whittington (11)
Alex Shirley (10)
Andrew Nurse (30)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (21)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (203)
Chris Paterra (55)
Clinton Patterson (28)
Cuong Dang (21)
Daniel Bartholomew (2)
Dave Buckner (2)
David Poindexter (3)
David Rodriguez (2)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (74)
Geoff Barlow (6)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (269)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matthias Schlomann (15)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Mike Horton (19)
Mitchel Sellers (28)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Peter Donker (52)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott S (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (2)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (37)
Will Strohl (163)
William Severance (5)
Try Evoq
For Free
Start Free Trial
a Demo
See Evoq Live
Need More Information?