My question is simple. About 2 years ago we began migrating to ASP.NET from ASP Classic.
Our issue is we currently have about 350 sites on a server and the server seems to be getting bogged down. We have been trying various things to improve performance, Query Optimizations, Disabling ViewState, Session State, etc and they have all worked, but as we add more sites we end up using more of the server’s resources and so the improvements we made in code are virtually erased.
Basically we’re now at a tipping point, our CPUs currently average near 100%. Our IS would like us to find new ways to reword the code on the sites to improve performance.
I have a theory, that we are simply at the limit on the amount of sites one server can handle.
Any ideas? Please only respond if you have a good idea about what you are talking about. I’ve heard a lot of people theorize about the station. I need someone who has actual knowledge about what might be going on.
Here are the details.
- 250 ASP.NET Sites
- 250 Admin Sites (Written in ASP.NET, basically they are backend admin sites)
- 100 Classic ASP Sites
Running on a virtualized Windows Server 2003.
- 3 CPUs, 4 GB Memory.
- Memory stays around 3 – 3.5 GB
- CPUs Spike very badly, sometimes they remain near 100% for short period of time ( 30 – 180 seconds)
The database is on a separate server and is SQL SERVER 2005.
It looks like you’ve reached that point. You’ve optimised your apps, you’ve looked at server performance, you can see you are hitting peak memory usage, maxing out the CPU, and, lets face it, administering so many websites musn’t be easy.
Also, the spec of your VM isn’t fantastic. It’s memory, in particular, potentially isn’t great for the number of sites you have.
You have plenty of reasons to move.
However, some things to look at:
1) How many of those 250 sites are actually used? Which ones are the peak performance offenders? Those ones are prime candidates for being moved off onto their own box.
2) How many are not used at all? Can you retire any?
3) You are running on a virtual machine. What kind of virtual machine platform are you using? What other servers are running on that hardware?
4) What kind of redundancy do you currently have? 250 sites on one box with no backup? If you have a backup server, you could use that to round robin requests, or as a web farm, sharing the load.
Lets say you decide to move. The first thing you should probably think about is how.
Are you going to simply halve the number of sites? 125 + admins on one box, 125 + admins on the other? Or are you going to move the most used?
Or you could have several virtual machines, all active, as part of a web farm or load balanced system.
By the sounds of things, though, there’s a real resistance to buy more hardware.
At some point, you are going to have to though, as sometimes, things just get old or get left behind. New servers have much more processing power and memory in the same space, and can be cheaper to run.
Oh, and one more thing. The cost of all those repeated optimizations and testing probably could easily be offset by buying more hardware. That’s no excuse for not doing any optimization at all, of course, and I am impressed by the number of sites you are running, especially if you have a good number of users, but there is a balance, and I hope you can tilt towards the “more hardware” side of it some more.