load balancing with multiprocessor servers

J

Jon

Ok, so say you have 4 servers, each with 4 processors.
Each processor has its own application domain for your
web application, and therefore has its own cache, right?

If so, is there a load balancer that handles processor
affinity for requests - so that requests are sent to the
same server, same processor, for a given user? If not,
then you are limited to single processor server, right?
Will a load balance handle server affinity so that
requests are sent each time to the same server during a
session?

Can anyone offer any expertise on this? We do not
necessarily need to handle a web farm with multiple
processors and multiple servers, but it would be nice to
understand the technical limits of the caching technology
with ASP.NET.

Thanks,

Jon
 
G

Guest

You should consider the fact that you can use other cross request caching methods like a State Server or SQL Server to contain the session variables

Application variables are indeed bound to the server the were started on

Check out StateServer and SQLServer session state management for more information

Kind Regards
Bjorn
 
G

Guest

Ok

Runnig on a web farm rules out the use of Application data caching because the Application object is unique to each Web server. Since each Web server has its own copy of the data cached in memory, data will become out of sync when data on one of the Web servers is updated independently of the others. Since you have no control over which server in a Web farm receives a request, the Web Service consumer might receive different results from two consecutive Web Service calls hitting two different Web servers.

More info here: http://msdn.microsoft.com/msdnmag/issues/02/12/WebFarms/default.aspx
 
J

Jon Paugh

Ok, this was an interesting read, and I appreciate it.

Responses:
1) Is there really no way to send all requests for a
single user session to a single web server?
Look:
http://www.winnetmag.com/SQLServer/Article/ArticleID/7637/
7637.html. Why would we not want to do this? I know there
would be some performance degradation compared to the
perfect web farm situation where any server can processor
and request. But maybe there are some performance
benefits as far as caching goes? At least it would be
simpler I would think.
2) Again, if 1) is possible, then is there a way to send
all requests for a single user session to a single
server, to a single processor? Do any of the MS servers
support this?
3) In the article you reference, the technique the author
describes is interesting, but how will locking work?
Isn't it possible that between the time that the user
changes the database and the web service calls to other
servers execute, another web request comes in to another
server and uses the wrong data?
4) In the article you reference, when application data
changes on one server handling the web service, requests
are sent to all the other servers in the web farm that
handle the web service. OK. But what if the other web
servers in the web farm have multiple processors. Since
each processor has its own cache, don't we need to send
one message to each web server, per processor (i.e. 3
servers, with 4 processors = 12 messages?)?
5) If 4) is correct, is there a way to send messages to
each processor on a server?

Thanks,

Jon Paugh
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,011
Latest member
AjaUqq1950

Latest Threads

Top