Sun Cluster: Guía del desarrollador de los servicios de datos del sistema operativo Solaris

Utilización de keep-alives

En el lado del servidor, la utilización de keep-alives de TCP evita que el servidor malgaste recursos de sistema en un cliente inactivo (o con partición de red). Si estos recursos no se reorganizan (en un servidor que permanezca activo el tiempo suficiente), los recursos malgastados aumentan sin límite, a medida que los sistemas de los clientes se caen y rearrancan.

Si la comunicación cliente-servidor utiliza un canal TCP, tanto el cliente como el servidor deberían habilitar el mecanismo keep-alive de TCP. Esta disposición se aplica incluso a los casos en los que no hay una alta disponibilidad y sólo hay un servidor.

Otros protocolos orientados a la conexión pueden disponer también de mecanismos keep-alive.

En el lado del cliente, la utilización de mecanismos keep-alive de TCP permite que el cliente reciba un aviso cuando se haya producido una recuperación de fallos o una conmutación de un recurso de dirección de red, desde un sistema físico a otro. Esa transferencia del recurso de dirección de red interrumpe la conexión de TCP. Sin embargo, salvo que el cliente haya habilitado el mecanismo keep-alive, no siempre recibirá información de la interrupción de la conexión, si ésta parece inactiva en ese momento.

Por ejemplo, suponga que el cliente está esperando una respuesta del servidor a una solicitud que requiere mucho tiempo y que el mensaje de solicitud del cliente ha llegado ya al servidor y se ha reconocido en la capa de TCP. En esta situación, el módulo de TCP del cliente no necesita seguir transmitiendo la solicitud y se bloquea la aplicación del cliente, mientras se espera la respuesta.

Siempre que sea posible, además de utilizar el mecanismo keep-alive TCP, la aplicación del cliente debe realizar su propia acción periódica keep-alive en este nivel, porque el mecanismo keep-alive de TCP no es perfecto en todas las situaciones de limitación posibles. La utilización de un mecanismo keep-alive en una aplicación suele requerir que el protocolo cliente-servidor admita una operación nula, o al menos una operación eficiente de sólo lectura, como una operación de estado.