Question

We are considering a SharePoint 2010 configuration where we deploy separate app pools/web applications for each business unit in our company. We would have 10 app pool/web app instances total in that configuration.

Microsoft's current guidance is for 10 app pools max per server, but with the caveat that it is really limited by server memory. Our WFEs current have 8GB RAM each.

How much RAM would be required to host 10 app pools (or more allowing for growth)? Is 8GB enough? Are there any thumbrules for estimating RAM usage per app pool? What other problems would I likely encounter?

Was it helpful?

Solution

Application Pools generally consume around 100-200MB minimum depending on various configuration aspects. 10 Application Pools would therefore be around 1-2GB+.

OTHER TIPS

If you are limited by Memory, you can share the same App Pool between several Web applications. This will allow you to save some memory. Sharing AppPools will allow you to pool that "base" memory per app pool.

The total amount of requiered RAM cannot be dertermined by just the number of WebApps, but is also affected by many other factors.

A valid reason to move one WebApp to its own Application pool would be if it does "not behave well" (Memory leaks, AppPool crashes ect.) That would allow you to apply some resource contrainsts on that application pool.

The thing to remember is that on x64 systems, an app pool can consume a lot of memory, if unchecked, 1GB+. On x86 systems, ASP.NET is capped at 900MB by default. Setting a memory cap is useful, but will cause the app pool to recycle if the app tries to go over it, basically bringing your app down for a few seconds. If bad code (Undisposed SPSite objects etc.) is deployed to a web app, the resulting memory leaks could cause this to happen regularly (and I'm talking every hour or less for high load apps).

So the main thing is to make sure the code running in those apps behaves the way it should :-D!

Be careful here - Chris is correct in that 200MB is an absolute minimum amount of RAM that an app pool might use. On the flip side, if you had say 5 very busy app pools you could quite conceivably hit 24GB + RAM usage. I wrote a blog on app pools on this a while back which goes into a little more detail (which includes some input from Steve Smith, MVP).

This isn't a question we can really answer without fully understanding your requirements. It very much depends on how many servers you have, concurrent usage, timer job scheduling etc.

As far as the number of Web applications you create is concerned, you generally want to keep this number as low as possible. As a hosted solution provider we normally try and stay below 5.

Remember that site collections are your unit of scale, not Web apps.

There is another way to play this... - given you require this high level of separation for business reasons - you could go one step further and - (effectively) give each SP - web application its own Windows - server

SP - farm - by design - will deploy - all 10 SP - web applications onto each - SP - front-end - web server (assuming you have more than one) - and as you require - each SP - web application to run in - a separate IIS - application pool - you will have 10 .NET - virtual machines (CLR) - all running multiple threads and - all competing for the same processor / memory resources

Instead of using "normal" network load balancer approach - you map web-address of each SP - web application - to a specific Windows - server (IP - address)

You could also do something like use 4 Windows - servers 5 SP - web applications on one load-balanced pair 5 SP - web applications on another load-balanced pair

Each server will in any case have all 10 SP - web applications - deployed and configured to run in its own IIS - application pool - but - unless a SP - web application actually recieves a HTTP - request - the .NET - virtual machine (CLR) is not "started"

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top