I'm currently trying to decide on the best approach to handle hosting a few moderate traffic websites for production e-commerce and online applications. We'd like to move to a dedicated server and are looking at this as the most likely machine:

Quad Core Intel Core2Quad Q9550 Processor, 2.83 Ghz X 4, 4 GB Kingston Ram

This would run Windows Web Server 2008 R2 x64 and potentially also Sql Server Web 2008 and SmarterMail server.

Given that we already pay for a high-end VPS for development, testing, shared version control we'd like to avoid going with two servers for production. We'd like to avoid using shared sql server hosting and have thought of using the development server as the database server as an option too - but potentially a security risk due to use for development by internal and contract users.

The questions are: - Do you feel there would be performance degradation by running this on the same machine? - Are there significant issues to be concerned about if we do this? We understand that best practice would be to run separate db and app servers but the volume of traffic is currently not that high and adding another server just for database is currently too costly. - What are others doing out there?

Alternatively, would you recommend instead going with two separate VPS servers with 2GB RAM each on Hyper-v which would be about the same cost as the single dedicated server above?


2 Answers 2


My preference would be two separate machines. Yes there are performance gains, minus network latency as Josh pointed out.
More importantly though if worst case scenario happens and your web server is ever compromised the hacker now has complete control of your database as well. If they are on separate machines you can better control access to your database server and two machines would need to be compromised instead of just one. Ideally you setup some really tight rules around access to the database server to make it more secure.



This is actually a good idea. Hosting the SQL Server locally means that your application will be making SQL calls to the local machine instead of going across the network. This will significantly boost your performance and cut your application latencies.

Just be careful to design a good backup process, and you will need to think more carefully about security on that box since the data is also stored there.

  • Reality check. The boost in latency will be neglegible compared to the internet speed for handling the requst. THe loss in performance will be in the range of 0.x% unless you pull in hundreds of megabytes of data - IIS will just wait, and do another page in the meantime (up to what - 50 pages per CPU core in parallel? - not sure where the standard limits are right now). Yes, there is an impact. No, you will not even be able to measure it. Rather get some good discs (SQL loves running on 4-8 discs) and get better performance there.
    – TomTom
    May 12, 2010 at 17:26
  • The amount of data is not the problem, it is the time the .NET app spends waiting for a request / response. Network performance, especially in virtualized environements, is highly unpredictable and latencies can be very high. I'm speaking from direct experience with both small apps / databases as well as high-volume apps / large databases. If you can eliminate the variable, why not do so? Furthermore, if the database is small enough, it would be ideal to run the entire DB in memory rather than requiring any disc access at all. If it's a large DB, caching queries in RAM is preferred.
    – Joshua
    May 21, 2010 at 15:57
  • The best example of how latency can affect broader performance is by looking at an SSD vs mechanical hard drive performance-over-time comparison: techreport.com/articles.x/18712/8 If you look at the generic file copy performance (techreport.com/articles.x/18712/5), mechanical drives are on par with SSD's, but because SSD's virtually eliminate latency, they will blow mechanicals away in multi-write/access scenarios.
    – Joshua
    May 21, 2010 at 16:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .