I recently setup a 2012 server core with hyper-v. I then installed server core 2008 R2 as a client. Installed IIS and started hosting an internal website. I started running throughput tests and found the web server could not handle as much traffic as expected. The VM was configured with dynamic memory at a max of 6 GB (way more than this simple page would ever need).

After a lot of reading it appears that IIS calculates its maximum connections based on the amount of available ram at start up. So I changed the start up ram in hyper-v to 6 GB (the maximum) and now the throughput tests are what I would have expected. Even though the Assigned memory is only 668 MB.

My question, Does IIS need its maximum ram at start up to make that calculation? if I did a start up memory of 1 GB would IIS ever try to use anything above and beyond that? If I had five or six web servers and had to assign maximum memory (which might exceed total available memory) to each would it have problems on a restart (starting all machines at once)? Basically, Do I need to set the maximum memory as the starting memory?


Server 2012R2 as the host would actually allow you to start all your VMs simultaneously, even if their total RAM exceeded that of the host. They'll have some of their state paged to disk until the Dynamic Memory agent kicks in and balloons out the unneeded memory.

As for your question about IIS, I don't know how it's coded. It could obviously be coded such that it doesn't need all of the available RAM at startup time. That would be more complicated, though, than coding it to just look at the reported RAM size.

  • I can't believe I didn't think of paging. End of a long week I guess. – user23528 Jul 7 '14 at 14:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.