web-dev-qa-db-fra.com

Connexion GRPC: Utilisez Keepalive ou idletimeout?

En regardant GRPC Java Doc - ManageedChannelBuilder, il y a deux options pour gérer les connexions. Il semble que idletimeout () est la configuration par défaut/préférée. Mais quand j'ai essayé de rechercher une comparaison, la plupart Parmi les postes parlent d'option Keepalive.

Je suis curieux de savoir quelle est la pratique courante et quels sont les avantages et les inconvénients de ces deux options?

idletimeout

Définissez la durée sans les RPC en cours avant d'aller en mode veille. En mode veille, le canal arrête toutes les connexions, le nameresolver et la valorbalancer. Un nouveau RPC prendrait la chaîne du mode veille. Un canal commence en mode veille. Par défaut à 30 minutes.

Ceci est une option de conseil. Ne vous fiez pas à un comportement spécifique lié à cette option.

KeepalivewithoutCalls

Définit si Keepalive sera effectué lorsqu'il n'y a pas de RPC exceptionnel sur une connexion. Par défaut à False.

Les clients doivent recevoir la permission du propriétaire de service avant de permettre cette option. Les conserveries sur les connexions inutilisées peuvent facilement consommer accidentellement une quantité considérable de bande passante et de la CPU. idletimeout () devrait généralement être utilisé à la place de cette option.

6
xialin

Utilisez Keepalive pour remarquer les défaillances de la connexion pendant que les RPC sont en cours. Utilisez idletimeout pour libérer des ressources et prévenir IDLE TCP Les connexions de rupture lorsque le canal n'est pas utilisé.

iDLETIMEOUT est préféré sur KeepaliveWithoutCalls car il a tendance à réduire la charge globale dans le système. KeepaliveWithoutCalls est utilisé lorsque vous êtes prêt à dépenser des ressources client, serveur et réseau pour avoir une latence plus faible pour les RPC très peu fréquents.

3
Eric Anderson