views:

71

answers:

2

I have over 50 clients connected to one server (low end server, running windows 2003 server), every time there is a power failure or switch failure the clients will disconnect from the server, the server might remain on during this incidents (if power backup is installed), when the clients came back they automatically detect the server and initiate a connection procedure, at this point the server will start dishing out the relevant data to the clients. Its at this point you realize some clients will start freezing becouse the server is not quick enough to dish out data and so it blocks the rest of the clients.

I have implemented a crude method to control this client storm but i was asking if guys out there have better algorithms to perform this kind of task.

NB: Am using Asta sockets components on a delphi application, but i dont mind examples from different fields,

+1  A: 

Similar to network collision-detection protocols, perhaps clients could wait a random period of time before initiating their connection at startup?

Andrew Coleson
A: 

In addition to the random startup delay suggested by Bremen, implement some sort of "too busy; try again later" message in your protocol. Rejecting a client with a short message should not be a problem for 50, 100, or even 1000 clients. Have the clients respond by doing a random delay and retrying + exponential backoff.

derobert
I'd normally +1 you for a sensible suggestion, but he said he's using Win2k3. I know from every day work experience that a win2k3 box (even top of the line) can't handle more than 500 clients for anything more than static page views. No reason to think his app performs better.
rmeador
A quick reject message should be simpler than a static page view.
derobert