We're trying to tune our IIS farm, and I'm trying to get my head around how Windows allocates resources in our current setup.
We have a pretty standard layout. We host 30+ ASP/ASP.NET sites on our server. We give each site its own individual application pool so we can manually recycle sites without affecting any others.
Since each application pool spawns its own IIS worker process (w3wp.exe), I was under the assumption that each process was allocated its own memory (meaning desktop heap, etc..). We began running out of desktop heap, so we increased the heap size for non-interactive desktops from 512 to 1024 as suggested, but we want to go even further if we can.
Am I right in assuming that since all of our app pools use the NETWORK SERVICE account, that only a single Desktop Heap is allocated to it?
If so, are their pro's and con's to simply giving each application pool its own custom user account?
Theoretically, each site would have its own memory allocation, and would only run out in EXTREME cases.
I'd appreciate your wisdom here. Thanks.
Each process (and hence application pool) gets its own resource allocation. This includes the process heap (which is the memory the process uses). This heap is never shared between processes, regardless of the identity of the process.
However, the desktop heap which you refer to in your question is shared across the entire system. Changing the user that the application pools run as won't give them any more resource.
There is more information here