views:

1165

answers:

7

I've read recommendations that we should create separate application pools for each asp.net application on our Win2008 server.

We have about 20 apps that would be on the same server. I know this would create 20 separate worker processes which seems very wasteful.

Is it good practice to create separate application pools for each application?

+1  A: 

If your apps are stable and don't use much memory, then I would say that it's fine to put them in the same app pool. App Pools give you isolation between your applications.

David
+1  A: 

One main reason I consider when creating app pools is the process management. There are other reasons such as security etc. When an IIS-hosted application crashes it takes down its host process as well. In previous versions of IIS this meant all web activity crashed together. With app pools you can isolate your applications from one another. If one has a memory leak and keeps crashing your other apps will continue to function.

TheZenker
A: 

The main benefit of creating different application pools is that you can provide each pool with other credentials. Your 20 applications may communicate with 20 different databases that all need another login. The best practice then is to run each application using a different service account.

I wouldn't worry too much about performance. Most time will probably be spent inside each web application, no matter what process each application is in.

Ronald Wildenberg
A: 

This really depends on the applications, your security model, and how much you trust the applications.

Here are a few things that I always tell people to consider when working with application pools.

  • Use separate application pools if each application needs different access to system resources. (Can use multiple process accounts)
  • If an application is a resource hog, mission critical, or an "unknown", it is best to put it in to its own pool to isolate it from the rest of the system
Mitchel Sellers
A: 

yes, it is a good idea even for 20 applications.

  1. Security. Different app pools running under different accounts.
  2. Isolation. One crashing app won't take down other apps.
  3. Memory (if you are running 32bit). Each app pool will have its own address space. Thus you can address much more memory than a maximum of approximately 2.7GB of usable space for 1 process.
  4. You may choose to periodically restart one not-so-well behaving app without affecting other applications.
DmitryK
+3  A: 

Reposted from ServerFault, "Why add additional application pools in IIS?"

  • AppPools can run as different identities, so you can restrict permissions this way.
  • You can assign a different identity to each app pool so that when you run task manager, you know which w3wp.exe is which.
  • You can recycle/restart one app pool without affecting the sites that are running in different app pools.
  • If you have a website that has a memory leak or generally misbehaves, you can place it in an app pool so it doesn't affect the other web sites
  • If you have a website that is very CPU-intensive (like resizing photos, for instance), you can place it in its own app pool and throttle its CPU utilization
  • If you have multiple websites that each have their own SQL database, you can use active directory authentication instead of storing usernames/passwords in web.config.
Portman
A: 

Separating apps in pools is a good thing to do when there's a reason, and there are a number of good reasons listed above. There are, however, good reasons not to separate apps into different pools, too.

Apps using the same access, .NET version, etc. will run more efficiently in a single pool and be more easily maintained. Most annoyingly, IIS will kill idle app pools, requiring the pool be recreated on each use. If you isolate infrequently used apps you'll impose an unnecessary startup cost on users. Combining these apps into a single pool will make for happier users when they don't pay the startup cost, happier servers when they don't give memory to multiple processes and CPU slices for them, and happier admins when they have to manage fewer app pools.

codepoke