views:

757

answers:

2

Currently, on our production IIS web farm, we host about 15 applications in a single App Pool (Default App Pool). There are two websites and about 13 virtual directories.

A colleague has recommended that we change our IIS configuration so each application is a separate App Pool (with identical settings).

Is there any drawback or potential issues to doing this? Is it possible that ASP.NET applications could have been built with the requirements that they are all within the same App Pool?

+1  A: 

Besides the configuration time and (maybe) more memory requirements there is no down side to using more than one App Pool.

(Just to be clear... the memory needed will vary depending on many factors -- but there is a way where 15 apps in one pool use more memory than 15 apps in 15 pools. If each app does not need much memory and the apps are used at different times and infrequently.)

Hogan
+3  A: 

I doubt they were built with that requirement in mind unless they rely on shared memory for some reason. Otherwise, for the scenario described...

Pros (of separate app pool):

  • process isolation (one crash doesn't bring down the others)
  • less resource contention
  • more memory available for in-proc sessions, cache

Cons:

  • more processes, memory, and context switchces
  • shared cache scenarios no longer available*

*I'm not sure how .NET segregates websites in the same app pool as it pertains to the HttpRuntime cache; for Sessions, "application uniqueness" (1) is determined by:

  • The physical path on all servers (case sensitive)
  • The machine key
  • The instance id
  • The approot

This is what prevents you from sharing sessions across different websites in the same app pool, for instance; but it might be easier to share cache data though. By and large, the discussion overlaps with the pros/cons of deploying a Web Garden for a specific application (2).

1)
http://support.microsoft.com/?id=325056
http://rodiniz.spaces.live.com/blog/cns!F2A56AAF89A7E43A!658.entry

2)
http://nicholas.piasecki.name/blog/2009/02/on-web-gardens-aspnet-and-iis-60/

Nariman
Based on my testing, HttpRuntime.Cache is specific to an application. A separate application, even if it is within the same app pool, has separate instance of HttpRuntime.Cache.
frankadelic
Microsoft states that applications are isolated even in the same pool, but every security review I've ever been on has been happy to hear there were separate app pools. I believe MS implemented this feature just to be "sure".
Hogan