Ok, here's a small story from real-life.
I've been given an order to upgrade a clients website, a "home-made" asp site with a forum and apx. 35000 users
The server is running on a Windows2003 R2 Server with SQL 2000, dual core and 2 gigs of ram.
Now, since I know and loveDotNetNuke, I decided to migrate the data into a DotNetNuke installation.
The rules
The new site should utilize ZLDNN Article module for most content on the site and DNNForum for the forum.
It was decided that only the most recent data should be migrated, so the cutoff date was all data older than 2 years should be discarded. Like wise with the users, all users that had been inactive for tha last 2 years should also be discarded.
In all that came to apx. 16.500 users, 50.000 posts in the forum and about 4.100 articles. Also all imagefiles from the old portal should be migrated, and that comes to about 10.000 imagefiles.
The new DNN portal would have about 50 pages (including Admin and host pages), so basically a tiny DotNetNuke portal.
So, with all of the migration rules in place, i started by creating a user migration procedure, which quite correctly imported the users and placed them into the correct Roles, assigning new passwords and what not, no issues there...the users got imported and authorised in the new portal.
Next came the Forum...
The import routine, that I created, automatically filled up the forum, creating Groups, adding forum's to the groups, adding threads to the forums and added posts to the thread and attached each post to the correct dotnetnuke user. This also went fine, and the forum was working properly, each thread is clear and equal to the original. At the same time I rebuild the Forum Post's body so that img-tags got e new SRC and quotes got correctly displayed.
At the same time, I've copied the image files from the Old site into a new foleder in the Portal-root folder,
Next came the import of articles from the old site. The DNN portal utilizes the ZLDNNArticle module, and data from the old website was migrated into this module. This module uses 7 instances on different tabs of the DNN portal, and the data gor correctly imported and attached to the correct DNN users. Also here, I rebuild the Body of the Article, replacing any img-tags with a new src, so that images in the articles got correctly displayed.
I then copied all the image files used in the old website into a folder in the portal Root.
So basically, the datamigration worked like a charm - all data clearly visible and correctly seperated.
The new "Home"-page in the DNN portal which can be viewed at : www2.hifi4all.dk (If you want to try the login, use User id :DNNTest, password : DNNTest12345
)
The homepage in DNN uses :
- 7 Banner modules
- 7 ZLDNNArticleList-modules (a modules thas shows data from the ZLDNNArticle-module, and links to that)
- 1 SeachInput module
- 1 Forum.LatestPosts module
NOW - here's the issue(s):
-"Home"-page of the DNN portal takes apx. 1-2 minutes to load.
-The Login-page takes about 1 minute to load.
-The login and redirect to "Home"-page takes 1-2 minutes to load....
-So basically the entire login procedure is about 3-5 minutes, which is totally unacceptable.
Once logged in and navigating to sub-pages, the performance seems to be ok, but navigating to the "Home"-page takes 1-2 minutes.....:(
So, what have I tried so far?
- I have set the Caching to : Memory, HeavyCaching, Public and GZip compression
- I have done tracing on the Users table, the Forum Post/Thread tables, the ZLDNNArticle table and the Files table. The analysis of the trace primarily mentioned the Forum_Posts and the Forum_Thread table as the main issue. Also the aspnet_membership, aspnet_Users ad Files table got mentioned in the analysis
- I have made new unclustered indexes, trying to include the most used columns from each mentioned table in the Analysis
- I have rebuild all the Clustered Indexes for the mentioned tables.
- I have installed the Snapsis PageBlaster module and added a PageBlaster Page module to the "Home"-page of the portal.(This actually have speeded up the loading of the "Home"-page, but still the login routine itself takes about 2-3 minutes.)
I have tried to remove most modules from the "Home"-page (that does the trick, but a Home-page without information is not really acceptable) and then adding one new module add a time. Once adding the LatestPosts module, a decrease in perfomance is very noticable. Also for each of the ZLDNNArticleList modules the performance is noticable.
Now, the ZLDNNArticleList module utilizes a SQL view, that uses 2(!) Files tables, the Users table and the main article table....
I have been in contact with ZLDNN, and they don't seem to be able to reproduce the issues.3
So I could really use some advice in speeding up the performance.
The server specs :
Windows 2003 R2
Dual Core
2 gigs RAM
2 SQL Servers : SQL 2000 and SQL2008 R2 Express
2 IIS sites :
www.hifi4all.dk (the original asp-based website) and
www2.hifi4all.dk (the new DotNetNuke portal)
1 Application pool which handles both IIS sites.
I hope this was enough information for all you clever people to mavybe give me a pointer in the right direction as what needs to be done... this is basically a very small DotNetNuke installetion, compared with a lot of other sites, and my hair cannot get any grey'er :)
Regards,
Martin Moesby
(DotNetNuke evangelist-wannabe)
"Please Obi-Wan Kenobi, you're my only hope"