ASP.NET performance decrease between 32bit/64bit server

64-bitasp.netwindows-server-2003

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

Best Answer

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.