Dépannage des exceptions client Java Gremlin - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Dépannage des exceptions client Java Gremlin

Le client Java Gremlin génère des exceptions spécifiques à son fonctionnement. Cette section fournit des informations supplémentaires qui vous aideront à les résoudre.

Résoudre les problèmes liés à java.util.concurrent.TimeoutException

Le client Java Gremlin lance unjava.util.concurrent.TimeoutExceptionlorsqu'une demande Gremlin excède au client lui-même en attendant un emplacement dans l'un des WebSocket connexions pour devenir disponibles. Ce délai d'attente est contrôlé par lemaxWaitForConnectionParamètre configurable côté client.

Note

Étant donné que les demandes dont le délai d'expiration chez le client ne sont jamais envoyées au serveur, elles ne sont reflétées dans aucune des mesures capturées sur le serveur, telles queGremlinRequestsPerSec.

Ce type de délai d'expiration est généralement causé de l'une des deux manières suivantes :

  • Le serveur a effectivement atteint sa capacité maximale. Si tel est le cas, la file d'attente sur le serveur se remplit, que vous pouvez détecter en surveillant leDemandes en attente de la file d'attente principale CloudWatch métriques, Le nombre de requêtes parallel que le serveur peut gérer dépend de sa taille d'instance.

    Si l'icôneMainRequestQueuePendingRequestsLa mesure n'affiche pas d'accumulation de demandes en attente sur le serveur, alors le serveur peut gérer plus de demandes et le délai d'attente est dû à une limitation côté client.

  • Limitation des demandes par le client. Ce problème peut généralement être résolu en modifiant les paramètres de configuration du client.

    Le nombre maximal de demandes parallel que le client peut envoyer peut être estimé grossièrement comme suit :

    maxParallelQueries = maxConnectionPoolSize * Max( maxSimultaneousUsagePerConnection, maxInProcessPerConnection )

    Envoi de plus demaxParallelQueriescauses du clientjava.util.concurrent.TimeoutExceptionexceptions. Vous pouvez généralement résoudre ce problème de plusieurs façons :

    • Augmentez le délai d'expiration de la connexion. Si la latence n'est pas cruciale pour votre application, augmentez le nombre demaxWaitForConnectionréglage. Le client attend ensuite plus longtemps avant son expiration, ce qui peut à son tour augmenter la latence.

    • Augmentez le nombre maximal de demandes par connexion. Cela permet d'envoyer davantage de demandes à l'aide de la même WebSocket connexion. Pour ce faire, augmentez le nombre de clientsmaxSimultaneousUsagePerConnectionetmaxInProcessPerConnectionParamètres de . Ces paramètres doivent généralement avoir la même valeur.

    • Augmentez le nombre de connexions dans le groupe de connexions. Pour ce faire, augmentez le nombre de clientsmaxConnectionPoolSizeréglage. Le coût est une augmentation de la consommation de ressources, car chaque connexion utilise de la mémoire et un descripteur de fichiers du système d'exploitation, et nécessite une liaison SSL et WebSocket lors de l'initialisation.