Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We are currently in the process of upgrading our 32bit production server to a more powerful 64bit server whilst upgrading to ASP.NET 4. However, upon doing some light load testing we seem to be having a performance decrease!

I have created a simple load test with a constant load of 20 users performing a few simple use cases and compared the results:

Page responses

As you can see, the highest performing config is the existing 32 bit server with ASP.NET 2.0.

You can see that by running IIS in 32 bit mode on the 64 bit machine, its fairly comparable to the existing 32 bit server, but when running IIS in 64 bit mode on the 64bit server - the performance is significantly poorer. I'm unsure why this is, given the new server is better.

For some reason, every time I run the test with IIS in 64bit, there is a large spike at the start, then it evens out but still with a higher response time than 32bit. The spike goes away when I run IIS in 32 bit mode.

64bit spike

Note that the app pool/app isn't being restarted between the tests, yet the spike is consistently there and the response higher than other configurations.

So - my question is: does anyone have any idea why this is? Are there any config settings I need to set? Does anyone have some pointers on how I can narrow down what's causing the difference?

Current production server: Win Server 2003 - 32bit - IIS6

New server: Win Server 2003 R2 - 64bit - IIS6

share|improve this question

migrated from Jul 12 '11 at 2:35

This question came from our site for professional and enthusiast programmers.

up vote 4 down vote accepted

As per documentation MS reommends running 32 bit app pools on 64 bit server as a web app should not use more memory anyway (internally).

32 bit apps are always more performant - smaller pointers mean less memory needed for a specific set of instructions which means better cache hit ratios.

64 bit processes only make limited sense - when a process really needs more memory. if you keep your web front end doing just that (front end) there is no reason it ever needs that much memory ;)

On top, it makes some sense to actually upgrade to more performant versions. IIS6 sucked big tiem performancewise - IIS 7.5 is a LOT better, ESPECIALLY if you run ASP.NET / managed code.

share|improve this answer
Interesting, thanks. I don't suppose you have a link to the MS doc with the recommendation just so I can do some further reading? Unfortunately I cannot use II7+ because I'm bound by Win2k3 :( – DavidMasters84 Jul 12 '11 at 8:19 - hosting guidelines ;) For iis 7 ,) – TomTom Jul 12 '11 at 10:43

We tried this on our Windows 2K3 server and got the same thing, I was not here at the time but it something to do with they way MS implemented 64Bit .Net in 2K3(not sure what but the person that told me is a MVP so I will take his word on it.)

And just to let you know that if you move to Win2K8 you might see the same thing as I did that with our servers here and got the same performance issue. From what I have been told and a bit of reading to take advantage of 64Bit .Net the use of integrated pipelines is recommended (

Sorry this does not answer your question but I thought i would let you know that you are not the only one seeing this issue.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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