I work for an internet ticket sales company and our largest customer
always has a tremendous volume of hits on our site as soon as tickets
go on sale. (I say tremendous, because for our current scenario as a
startup, it is tremendous to us. The actual number is somewhere near
500 people hitting the site all at once as soon as tickets go on sale.
The number then decreases fairly rapidly as the day goes on.) We
learned last year that with our old application, we couldnt acceptably
handle that volume. This year, we have made many changes to the
application, but i would also like to put measures in place to handle
any trouble gracefully.
My plan is to set something up like this: Using load testing tools,
calculate the maximum number of concurrent connections our site can
manage and still perform acceptably. Lets call this X. Set the
site/application up to count to X and then as soon as user #X+1 hits
the site, they are redirected to another site with one static page that
simply tells them to wait and try back later. (This may be automated
with META refresh tags or something).
Now, I have read several other posts that help with this. However, I
have one major difference from those. I am using SQL Server to manage
session state because we are currently on a Web Garden and will be
moving to a cluster soon. From what i understand on the other posts,
you set something up in Global.asax (by the way, I am using ASP.NET) in
the Session_Start and Session_End events to count the active sessions
and handle it appropriately. However, with SQL server managing session
state, it never fires the Session_End event. Therefore my number never
drops below X until the session times out after 20 minutes or so.
I'd love to do this in IIS without setting a limit on the web site the
standard way (in properties box) because after it hits the limit, it
just generates a standard "Service Unavailable" message and then we get
tons of support calls and emails. :(
Any suggestions? Thanks for any help in advance!
Jorin