title: Architecture recommendation for load-balanced ASP.NET site
body: <p><strong>UPDATE 2009-05-21</strong></p>
  
  <p>I've been testing the #2 method of using a single network share. It is resulting in some issues with Windows Server 2003 under load:</p>
  
  <p><a href="http://support.microsoft.com/kb/810886" rel="nofollow noreferrer">http://support.microsoft.com/kb/810886</a></p>
  
  <p><strong>end update</strong></p>
  
  <p>I've received a proposal for an ASP.NET website that works as follows:</p>
  
  <p>Hardware load-balancer -> 4 IIS6 web servers -> SQL Server DB with failover cluster</p>
  
  <p>Here's the problem...</p>
  
  <p>We are choosing where to store the web files (aspx, html, css, images). Two options have been proposed:</p>
  
  <p>1) Create identical copies of the web files on each of the 4 IIS servers.</p>
  
  <p>2) Put a single copy of the web files on a network share accessible by the 4 web servers. The webroots on the 4 IIS servers will be mapped to the single network share.</p>
  
  <p>Which is the better solution?
  Option 2 obviously is simpler for deployments since it requires copying files to only a single location. However, I wonder if there will be scalability issues since four web servers are all accessing a single set of files. Will IIS cache these files locally? Would it hit the network share on every client request?
  Also, will access to a network share always be slower than getting a file on a local hard drive?
  Does the load on the network share become substantially worse if more IIS servers are added?</p>
  
  <p>To give perspective, this is for a web site that currently receives ~20 million hits per month. At recent peak, it was receiving about 200 hits per second.</p>
  
  <p>Please let me know if you have particular experience with such a setup. Thanks for the input.</p>
  
  <p><strong>UPDATE 2009-03-05</strong></p>
  
  <p>To clarify my situation - the "deployments" in this system are far more frequent than a typical web application. The web site is the front end for a back office CMS. Each time content is published in the CMS, new pages (aspx, html, etc) are automatically pushed to the live site. The deployments are basically "on demand". Theoretically, this push could happen several times within a minute or more. So I'm not sure it would be practical to deploy one web server at time. Thoughts?</p>