Method and system for detecting a dead server in a multi-server
environment. A virtual ring structure is used in which each server in a
server pool is only required to monitor the status of two other servers in
the server pool. Thus, a server need only transmit ping signals to two
other servers (its buddies) in the server pool at any given time. Because
each server maintains the status of only two other servers at any given
time, the size of the server pool is not limited by the ability of each
server to send and process ping signals. The two servers which are
monitored by any given server in the server pool are referred to as the
"buddy A" server and the "buddy B" server. When the monitoring server
determines that one of its buddy servers is down, the monitoring server
reports the status of the down server to a SQL server that maintains a
server table. The server table maintains a list of each "live" server and
the buddy servers assigned to that server. Down servers are removed from
the server table. When a server determines that one of its buddies is
down, the report to the SQL server results in a buddy reassignment. The
buddies of the down server are made buddies of one another and the virtual
server ring is once more intact. The SQL server then knows not to route
any client to the down server.