Guide des développeurs pour les services de données Sun Cluster pour SE Solaris

Utilisation du mécanisme Keep-Alives

Côté serveur, l'utilisation du mécanisme Keep-Alives au niveau des connexions TCP protège le serveur contre les gaspillages de ressources système d'un client en aval (ou partitionné en réseau). Si ces ressources ne sont pas nettoyées (dans un serveur restant allumé suffisamment longtemps), elles finissent par s'étendre de façon illimitée lorsque les clients tombent en panne et sont réinitialisés.

Si les communications client-serveur passent par un flux TCP, le serveur et le client doivent activer le mécanisme Keep-Alives au niveau des connexions TCP. Cette disposition s'applique également dans le cas d'un serveur unique non-HA.

D'autres protocoles orientés connexion peuvent intégrer un mécanisme Keep-Alives.

Côté client, l'utilisation d'un mécanisme Keep-Alives au niveau des connexions TCP permet au client d'être notifié du basculement ou de la commutation d'une ressource d'adresse réseau d'un hôte physique vers un autre. Ce transfert de la ressource d'adresse réseau interrompt la connexion TCP. Pourtant, à moins que le client ait activé le mécanisme Keep-Alives, il n'est pas nécessairement informé de la déconnexion si la connexion est latente à ce moment.

Par exemple, supposons que le client attend une réponse du serveur à une requête longue durée, que le serveur a déjà reçu cette requête et qu'il en a déjà accusé réception au niveau de la couche TCP. Dans cette situation, le module TCP du client n'a pas besoin de continuer de transmettre la requête alors que l'application cliente est bloquée car elle attend la réponse.

Chaque fois que cela est possible, en plus d'utiliser le mécanisme Keep-Alives au niveau de la connexion TCP, l'application cliente doit également exécuter un mécanisme Keep-Alives périodique à son niveau. De fait, ce mécanisme n'est pas parfait dans tous les cas de limite possibles. L'utilisation d'un mécanisme Keep-Alives au niveau de l'application requiert généralement que le protocole client-serveur prenne en charge une opération Null ou au moins une opération de lecture seule efficace, telle une opération d'état.