performance issues using iis and sql with dotnetnuke


For the last week or so I have been discussing a performance issue I have been having in regards to the delay time I have been experiencing when I click on my dotnetnuke site in my development environment.  From the time I click on a link in the browser using localhost/dotnetnuke to the time I see results from the database onto the browser (as it is a fully dynamic site) is approximately 1 minute some pages take 30 seconds others when they hang more then 2 minutes.

I was going back and forth with a database specialist concerning the issue thinking it was a problem with my sql 2005 express server and so I changed over to an evaluation version of sql 2005 enterprise in which I used profiler to save traces to a table in order to try to diagnose the issue.

The issue is when I work on this dotnetnuke site in my development environment which consists of windows xp pro, athlon 64 bit 3000+ processor, 2 GB RAM and a 75 GB 10000 rpm sata drive (which the sql server is on) what happens is the process called sqlservr.exe takes up about 99% of cpu.

When I did a querey on a system table in sql server I found that the actual cpu signal was only around 4% at most where as the resource_wait_time was almost 100%.  The more I clicked in the development environment the longer in ms was the resource wait time but the only thing that dropped was the %of wait time resources which didn't drop much.

Toi make a long story short the conclusion was that the performance issue was not do to the sql server or operating system, or bottlenecks like i/o file, cpu, etc.. (since only 1 person is accessing the database at a time and judging on performance monitors, process window, and profiler nothing would suggest i was dealing with hardware bottlenecks in my case) but was rather perhaps do in part either by the limitations of iis 5.1 which comes with xp pro or maybe the web page itself though on the production site which is hosted by a third party host running server 2003 xeon quad core processors the speed is 10X faster so I can't imagine the web page itself is at stake which leads me to believe it boils down to some kind of iis configuration.

So the question is does this make sense.  Is it possible that iis plays a role in significantly slowing down system performance when dealing with a development environment that is  heavily dynamic and dependant on sql server.  If iis does play a role in this what kinds of tweaks could be done to iis to help with the performance if nothing can be done to iis than do you have any suggestions of what else could be the cause of over 1 minute delays per click in an in house development environment with the conditons listed above in which only 1 user is quereying the database at a time.

Thanks any suggestions would be greatly appreciated and if you need snippets from my conversation with a person who has familiarity with database administration I would be happy to paste some of those snippets in the comments to better help tackle the problem more thoroughly
Who is Participating?
Ted BouskillSenior Software DeveloperCommented:
Personally I prefer working locally but economically I agree it may not be the cheapest.  I use a Toshiba Satellite with 2 GB of RAM to do all my development.  If I upgraded to 4GB I could do everything I need quite well.

My laptop has XP as the host operating system and I do most web site development directly on it.  However, if I need to replicate server conditions I use virtual machines in VMWare.  It would work better if I had more RAM but it's tolerable.

I like working on a laptop because I can work anywhere.  Sometimes my wife is shopping with the kids at the mall and I sit on a bench and work for an hour! :)

I have a server I also use at home for development but it's homemade.  I mix and match components to save money.  For example, I log onto it remotely using my home network so it has a VERY cheap video card.  I usually buy a better quality motherboard then a cheap CPU that I can upgrade later.  The same with RAM.

Don't worry about replicating production when doing development.  For example, I find that if an application performs well on slower development box you know it will likely be fine on production.

It's a short answer for a long question.    The best advice I can give is always give yourself options.
Ted BouskillSenior Software DeveloperCommented:
IIS is actually a very thin application.  Basically it is a facilitator for scripting applications like ASP, ASP.NET et al.  However, 5.1 does have some problems.  It's application pooling is crude and a poorly written web application can interfere with other applications on the server.

XP is a terrible choice for doing performance analysis.  It doesn't properly manage background processes and services even if it is clean with nothing else installed.  By the way, did you look at the hidden services and processes in the task manager?  I'd recommend you look at a tool like 'Process Explorer' from SysInternals which was bought by Microsoft (search the site)

I do not do any serious development on XP.  In fact I STRONGLY discourage the developers I manage to use it.  All my development work is on Windows Server 2003 and when I am diagnosing performance I use a non-development staging server.  If you can't afford extra hardware, use virtual machines.

My speciality has been improving the speed of web applications.  I'd need a lot more details to help.
cyboramaAuthor Commented:
I believe it is as you say something in the neighborhood of xp problems as this web application (dotnetnuke) runs fair on the production server though I will have to admit I believe the framework has some performance issues of its own but certainly not to the degree that I have run into them on windows xp pro.  It seems as if what ever is responsible in this xp pro operating system has in fact compounded the performance issue of the web application.

I am thinking of purchasing windows 2003 server and installing this on my 75 GB 10,000 rpm sata drive.  What I was wondering is two things.

1. Is performance hampered if two servers are installed on the same drive (i.e. windows 2003 server and sql server express) or should that really not be a big issue?

2.  What would you suggest should be the structure of how I set up this development environment via windoows 2003 server in order to help prevent these kinds of performance issues such as waiting a minute just to see the resutls of a querey on a web browser.  For my situation where it is only 1 user working on the development of a web site is it ok for me to set up a development environment where I the user log into the windows 2003 server and than set up the sql server, and windows server 2003 so I can work on this dotnetnuke website locally and perhaps install a couple applications such as dream weaver or expression web, etc...

Or should I set up the widnows 2003 server as a stand alone machine and than grab another client box that would be used for front end programs like web expression that could have access to the server for simply data exchange and not foreground processes like would be the case with software tools for development purposes.

I guess the real question is would it make significant performance difference using one structure (the user logs in to windows 2003 with minimal development applications and accesses the server via this approach) over the other structure (the user logs into a seperate client box that is connected to the server in which all foreground or application use is done by this client box and data is being transacted from the database, etc... from the second server box so the server has no application overhead other than simply fetching and retrieivng requested data fromt he client.)

If their is really no significant performance issue with either structure I would like to perhaps go with the idea of purchasinga nd installing a windows 2003 server and sql server on one of my hard drives (the fastest one) and just have a client/server combo where I the user just set my computer for dual boot so when I develop web stuff I boot into server 2003 operating system and when I do other types of things I boot into my windows xp pro for all non developer tasks.

I have three hard drives on my system as of now two being sata and one ide.  The sata that windows xp pro is installed on is 500 GB running at 7200 rpm and the other sata (that my sql server is on) is 75 GB running at 10,000 rpm and my third hard drive is the slowest of the pack being simply an eide ata 100 500 GB running at 7200 rpm.

The reason I gave you all this detail is so you could give me some direction as to weather I should think about putting each major component on a seperate drive (i.e. xp pro one one, server 2003 on another, sql server on the third) or weather I should (still using dual boot) put everything on the one sata drive or perhaps keep the xp pro isolated on its own hard drive and the servers (2003, sql) on a second hard drive and use the third simply for storage and not for processing.

The last part of my inquiry in this comment is that given my cpu is an athlon 64 bit 2000+ (2.0 GHZ) processor I was wondering what effect on performance or smarts maybe it more like it would it be to go ahead and invest in a windows 2003 server 64 bit version or simply stick with the 32 bit version.  

As for windows xp pro I have opted to stick with the 32 bit version simply because some drivers, devices, etc... just do not work with 64 bit windows xp pro.  But seeing that the only purpose for windows 2003 server will be really simply development and not the use of all my other nifty hardware like tv tuners, sound cards (well maybe sound card for situations I need sound in development) etc... I was wondering if it would be smarter to get this 64 bit version that would make use of the full processing power of my cpu or weather it would be wiser to just go 32 bit windows 2003 server since the production site of the the web site is hosted by a third party company that uses xeon 3.0 GHZ quad core processors meaning their hardware is not 64 bit hence neither would their live server be 64 bit.

In other words is their any real or major rixk of opting for the 64 bit windows 2003 server for development purposes since the live server doesn't support 64 bit processing is their any risk that developing under this environment would conflict in some way with the live server when the development site is pushed up to the live server or is it really not risky and hence smarter to go 64 bit to use the full power of the processor in order to increase the chances of optimal performance.

Thanks for taking the time to reply to my inquiry.



Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

cyboramaAuthor Commented:
Another question I have is in regards to setting up some time of development server on the same host as the production server is.  Of course this would not be my own home in house network but I was wondering the advantages and disadvantages of such an arrangement.

For example if I used windows 2003 server set up the proper way would it be able to send data faster than doing it via over the internet hosting setting, would it be about the same speed as the host with top of the line servers would give or would it most likely be a little slower than the performance a professional host site would give.

Reason I am asking is I am trying to decide weather it would be smarter to invest in say a $500 windows server 2003 operating system or simply borrow more space from an already existing host with state of the art equipment for a few dollars extra a month.

What is your take on it just trying to get an idea the best way to approach this performance issue I am facing with.


Ted BouskillSenior Software DeveloperCommented:
OK, I'll answer question #1 first.  Running both SQL and web applications on one server is fine as a starting point especially if you can afford about 4GB of RAM.  The bigger issue on a internet application is security.  If the web application is penetrated, then your SQL server is vunerable.  IIS is actually very safe as long you follow best practices and you do NOT use FTP.  FTP is a very weak protocol.

Now onto the x32 versus x64.  I've read an article online comparing both for SQL.  In many smaller applications x32 is actually faster because it doesn't have to move big chunks of memory.  However, the big advantage of x64 is native support for more than 4GB of RAM.  As you pointed out a downside to x64 is driver support.

I designed and built a 7 server MOSS 2007 web farm for my employer.  My biggest source of grief has been that I have had trouble linking to Oracle servers on the x64 O/S.  However I don't think you will have that problem.

By the way, a important point about performance is generally if it runs well in development it will be better in production! :)

Instead of using dual boot I'd recommend you use virtual machines.  VMWare or Microsoft Virtual Server are free and all you need for development.  Setup Windows 2003 as the host operating system with SQL.  Definitely install SQL on the fastest drive.

There are so many advantages to virtual machines for development it's hard to describe here.  You can run x32 operating systems on the virtual machine even though the host O/S is x64.  Then you can use one VM for development and the other for user testing.

There is no risk to use x64 for development and x32 for production or visa versa.

By the way, if you want to save money on development operating systems sign up to the Microsoft Partner Program as an independent ISV then buy the Microsoft Action Pack.  You get 5 CAL's and more software than you can imagine to run a small business and do development.

Go with the hosting provider.  They have fully redundant fast, scalable hardware that is backed up, reliable et cetera.  I often recommend GoDaddy.  Great prices, services and support.

Cheers (I hope I answered all your questions)  If I missed any ask again, I like these type of discussions.
David ToddSenior DBACommented:
Hi Bo,

One note, if your host OS is 32bit, then you can not host a x64 OS, but presumably can do so the other way round. I wanted to experiment with SQL -64 bit on the cheap ... :-(

cyboramaAuthor Commented:
yes tedbilly,

The info you provided was extremely helpful.  After posting this last comment concerning the structure of this development environment I got to thinking if it might be wiser for me to just get another account with my hos that I have the production website with and use that second account as a development account and so tap into their xeon 3 GHZ quad core processors and state of the art servers.

An account with them would be approximately $125 a year with a couple monthly feels of $5 and $10 to keep up an sql server with them.  I was sort of mulling over weather this option made more sense or weather my initial option was the better choice that is setting up my own in house environment.

I got to thinking of the cost of a windows 2003 server and found it to be in the neighborhood of about $500 or so and while that may seem inexpensive when looking at the long term I got to thinking that I could have at least 3 years of development power on a state of the art server through a host company before I would hit the same price I paid for the windows 2003 server and of course 3 years down the road a better version of server would come out.

If I were to opt to go the remote way of development via another account with a hosting account than of course any new cpu, other hardware, software, etc... would be maintained by them and I could almost guarantee that my developmental site on this second account would be compatible with the production account since it would be using the same stuff (hardware, software etc...) as the production site is using.

Further more if I were to go this route if for what ever reason my internet went down I might be able to continue developing on another computer somewhere else that has high speed internet that isn't donw.

Than again if I were to go with this host option I found out to have a second account with them could be a cumbersome thing when it came to pushing the development to production as the only way to do this would be to ftp a backup of the development database or development files to my local computer than sign into the ftp account going to the prodcution site and pushing them all back up to the production site so going this route would mean one extra step of downloading files to my computer from the remote server and than having to go ahead and re upload them to the production server for ti to take effect.

I am putting this sort of brainstorming I am going through in this comment because I am having a hard time trying to decide what the wisest move would be in the long run as their seems to be as I see it very real and significant advantages and disadvantages to each option.

* The main advantages of having my own in house development environment of course being no matter if internet went down or didn't go down it wouldn't matter I could keep working on development since it would be all contained on local drives

* other advantages would be as I discussed earlier saving a step when it comes to bringing the development into production

* Of course I would have all the hard drive space I could possibly want if using my computer as I would not have to rent hard drive space but would have as much as I need to the capacity of my drives without monthly fees for using more space.

Some very real disadvantages of course would be

* initial cost of the windows server
* Initial cost of any extra hardware that might be required such as 2 GB more ram, maybe some core duo cpus, etc...
* All processes would be rendered strictly on my system and so all data processing strains such as from continual querey's etc... would reside on my computer hence tending to make things somewhat slower in terms of development.

* Initial time to just get all the pieces set up and the need to test the environment to make sure it has adequate performance.
* do to the fact my system is not state of the art like that which you might find on a remote host it may well be that after paying all these initial costs I would not have any faster speed in development as I find when in the performance environment if I get as fast.

Of course the real disadvantage of going remote host for development purposes is the fact of this extra step that has to be taken in terms of bringding development into production

Also having to be strictly dependant on the stability of their equipment (which I am sure is very adequate) having to of course buy more space if needed and pay extra for the use of sql server on top of the basic host package price.

I guess as I brain storm these two options I am mulling over my question to you would be when you are about to agree to work on taking over the maintenance and upkeep plus additions and subractions of the site as needed obvioulsy the no brainer is I need to have this development environment in which I can do my testing, development, etc... seperate from the production area so any thing that might no jive correctly won't affect the visitors who already are coming daily to visit hence won't effect prodction.

The thing that to me is not quite as no brainer is the best way to tackle this situation (since you and I know xp pro is not the answer)  I live your suggestion on VM however as well as the idea of being a microsoft partner but given these advantages and disadvantes of going fully in house development environment or leaning on another hosting site to rent their equipment if you will for the purpose of development looking at this whole situation at the stand point of a web application performance specialist and smarts in terms of the most economical way of approaching this with the best performance possible given these two options which one in your mind would seem to make the most sense in approaching when beginning to take on this project.

I am like at the cross roads of building this environment since my current operating system is really not up to this development stuff so ifyou can give me a bit of wisdom as to what you think would make the most sense I would appreciate it thanks for answering the questions you have answered thus far concerning how to prepare and the best way to do this in terms of a fully in house development experience.  So I guess this question is a question that of sorts ties the loose ends together concerning development environments and helps me get a bit of direction on the main path to take and than from their I can get further instruction as needed to make the environment I am builidng the most effective it can be thanks for your help and for getting into this discussion so.


cyboramaAuthor Commented:
That makes sense to me thanks for this dialog you have had with me concerning web application performance I think what I have decided for now is to opt with the remote host for testing when it comes to data crunching like this dotnetnuke dynamic website is purely since it is just about 100% dependant on a database server.

I figure I could do my application developments (i.e. dotnetnuke modules, flash components, etc...) using my local xp pro computer and than push these things up to the testing environment remotes for the purpose of performance and effiency for the time being but this discussion we had here has really given me some direction in which way to go with this development environment thanks for your help.

cyboramaAuthor Commented:
a short answer but right to the point gave clear direction in the approaches that he personally took in development and encouraged me to keep options open and not get stuck in a rut if you will in doing something one way and only one way.  Great advice and deserves all the points he received.
Ted BouskillSenior Software DeveloperCommented:
I think you made an excellent choice.  Using the remote host for testing/staging is an great idea because you can pre-deploy and work with the latest builds without interfering with production.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.