Recently my user count has increased and my current server has started to become insufficient. I am thinking about buying 4 x 8 = 32 core AMD CPUs using dedicated server. I wonder how good ASP.NET 4.0 and MS SQL 2008 Web Server is at multithreading.
Can they use 32 cores with 100% capacity, or should I buy a maximum of 24 cores or 16 cores?
(This machine will be running on Windows Server 2008 Standard Edition.)
The answer - technically 100% capacity is a dream due to the overhead of managing more work, but MS SQL Server 2008 is quite good at scaling out cores/processors... Here's the capability chart: http://msdn.microsoft.com/en-us/library/ms143760.aspx
I would venture to guess that you will be chasing bottlenecks when beefing up a single big box type system and it's quite possible that CPU additions may do nothing at all if your current bottleneck is memory or drive io's.
The money spent on CPU's (and corresponding SQL license costs) will likely be better served by spending it on maxing out all available memory first. Then look at faster drives (SSD perhaps?) Obviously ensure any networking issues are handled if not already looked into. But the very biggest thing to look at is code/design. Time spent on optimizing existing code will likely give you the most 'bang for the buck'
However, my main recommendation - spend a relatively little amount of money on an audit by a SQL professional. Let them give you a rundown of what would be the best solution to your unique problem.
Good luck!
I suspect that at that work rate, other parts of the system will start to groan. This problem may be more economically served by using a farm of servers rather than a single beast.
Can you provide more info in the number of requests you get say in a hour or day? What hardware have you got currently? Where is the bottle neck currently? Is it CPU or I/O?
ASP.NET can use all cores. MS SQL 2008 can use all cores and any amount of memory you allow it to.
The problem is never with the Server software but rather always with the code your write (that is your ASP.NET application) and the way you've designed your database (both the logical and physical database) and the queries you write etc.
From experience with optimizing large public domain websites I can tell you that your web server is not where things are slowing down. It is typically in the way the application is designed and coded and how the database has been designed.
You should gather a lot of data on usage, of your current hardware and profile your asp.net application and the database to see what causes the the stress.
Once you know what causes the stress the solution might just be that you need to clean up your code/database a bit.