“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
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