views:

2909

answers:

3

We want to switch a web server from Windows 2003 to Windows 2003 Enterprise (64 bits) to use 8GB of RAM. Will IIS 6.0 and an ASPNET 1.1 application be able to benefit from the change?

A: 

My understanding is that there was a virtual address space limitation of 3 GB in ASP.NET 1.1, and that it was never made 64 bit compatible, though 2.0 was.

You can get IIS 6.0 to run 32 bit (i.e. ASP.NET 1.1) on the 64 OS, but it will be in a 32 bit mode (along with anything else hosted, including ASP.NET 2.0 sites).

Microsoft article on switching between 32 bit and 64 bit

Pseudo Masochist
A: 

The memory limit is 2GB unless you use the /3GB switch on the process which will use 1GB of the kernel space for the process itself. The only way to go beyond 3GB with IIS is to run the 64-bit version.

crackity_jones
+3  A: 

Since ASP.Net 1.1 has no x64 support, you are limited to running IIS 6 using 32 bit worker processes. The /3GB switch doesn't do anything on x64, but x64 natively gives 32bit processes 4 GB instead of 2GB, so you will have more memory available for your worker proces.

You will need to set the AppPools to 32 bit:

cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1

You could consider tweaking the ASP.net memory from 60% of the application to 80%, which we've had some success.

<system.web> 
  <processModel memoryLimit="80" />
</system.web>

This can stress the app pool when you get up into the 1.2GB to 1.6 GB range.

Other things to consider is that most ASP.Net 1.1 applications have no issues when run in a 2.0 application pool, allowing you to easily convert your 1.1 32 bit application to a 2.0 64 bit application. This doesn't require any recompilation, just change the app pool to 2.0, then switch to x64 using the above ADSUTIL.VBS script (set to 0 rather than 1).

Christopher_G_Lewis