We would like to use Web Gardens for load-balancing and we want to know the caveats to using this feature?”

We have a application that CANNOT go down so we were thinking of using Web Gardens to ensure the application doesn’t fail.  Will this ensure that the application is available as often as possible?”

…and more, more, and more.

These are by far one of the top questions answered by David Wang & myself, and one of the more frustrating.  Frustrating…yes, because we can’t seem to understand why so many folks misunderstand “when” to use it.  Though, after reviewing our guidance on the matter I can understand the reason folks think it *might* be useful.

In the world of hardware, many people note that more is better.  It some examples, we have the following:

  • Having multiple CPU’s is an advantage
  • Having a web farm is more sufficient for web applications reliability
  • Having Datastores, Mailbox stores, or File Servers clustered (multi-nodes) improves reliability

I can’t deny that each one of the above has positive benefits, but each also would have drawbacks…

…Multi-CPU’s can hurt performance through CPU switching.

…Session state can be challenging in farm scenarios.

…Clustering is complicated, expensive, and difficult to troubleshoot.

The above can certainly cause a stir and create a debate but the fact is that most things “technical” and based on “technology” have positives while having negatives.  The goal of many IT decision makers and deployments is to minimize the negative while maintaning all of the positives.  This is no different with Web Gardens and the reason we often find ourselves explaining the answer to the above questions. 

Web gardens was designed for one single reason – Offering applications that are not CPU-bound but execute long running requests the ability to scale and not use up all threads available in the worker process.

The examples might be things like -

  • Applications that make long running database requests (e.g. high computational database transaction)
  • Applications that have threads occupied by long-running synchronous and network intensive transactions

The question that you must ask yourself -

  • What is the current CPU usage of the server?
  • What is the application’s threads executing and what type of requests are they?

Based on the criteria above, you should understand better when to use Web Gardens.  Web Gardens, in the metabase, equals the MaxProcesses metabase property if you are not using the User Interface to configure this feature.

cscript adsutil.vbs set w3svc/apppools/defaultapppool/maxprocesses 4

I hope that I get some mileage out of having this blog and more importantly I hope it helps you understand this better…

Web Garden Documentation:

Configuring Web Gardens

New Features Improve Your Web Server’s Performance, Reliability, and Scalability