NoNodeAvailableException suite a timeout du client

Salut,

Depuis débutjanvier nous rencontrons régulièrement l'erreur "NoNodeAvailableException".
Nous avons la sensation que c'est également lié au logs suivants, lui aussi régulier depuis cette date :

23:56:34 t=elasticsearch[Golden Girl][transport_client_worker][T#5]{New I/O worker #5} l=WARN c=o.e.transport rid= url= query_string= method= m=[Golden Girl] Received response for a request that has timed out, sent [12ms] ago, timed out [0ms] ago, action [cluster:monitor/nodes/info], node [[#transport#-1][XX.XX.XX.XX][inet[localhost/127.0.0.1:9300]]], id [4781972]

De la façon dont nous le comprenons, le client ES rencontre un timeout avec ES et décide de supprimer le noeud des noeuds disponibles. Les requêtes suivantes lancent alors une NoNodeAvailableException.

Savez-vous s'il est possible d'augmenter ce timeout (et d'en connaitre la valeur) ?

Pour info nous sommes sur un ES 1.4.2 (oui c'est vieux, les upgrades ont été douloureux à chaque fois et nous avons repoussé jusqu'ici les suivants).
Nous n'avons qu'un seul noeud avec 5 shards.
Ce noeud est sur la même machine que les applications.

De votre expérience, quelle serait les métriques à regarder pour tenter d'expliquer ces timeout récents ?

Au minimum il faut faire la mise à jour en 1.7. Beaucoup beaucoup beaucoup de choses ont été ajoutées pour la stabilité.

Evidemment, passer en 5.x serait encore meilleur à mon avis mais sans doute plus de travail à faire.

Je n'ai pas sinon de réponse à ta question précise. Cette version n'est plus maintenue et la branche 1.x est (bientôt ou déjà) EOL.

ok on va tenter un upgrade 1.7.6 cette semaine déjà dans un premier temps et je mettrais à jour le topic en fonction de ca.

N'hésites pas cependant si tu as des articles intéressants sur les métriques qui méritent d'être monitorées.

Salut,

Pour continuer sur cette histoire de timeout que j'évoquais. On a changé ceci dans le code pour s'éviter ces soucis :

    Settings settings = ImmutableSettings.settingsBuilder()
            .put("cluster.name", clusterName)
            .put("client.transport.ping_timeout", 10000)
            .put("client.transport.nodes_sampler_interval", 5000)
            .build();

Dans la doc il est indiqué que le timeout par défaut est de 5 sec : https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html

Mais ca nous parait étrange quand même d'avoir des timeout de 10 sec pour pinger un node.
Le résultat de l'upgrade en prod ce sera demain je pense.

On a finalement pris plusieurs actions qui ont fini par résoudre le point :

  • upgrade en 1.7.6
  • changement de paramétrage client.transport.ping_timeout à 10000 et client.transport.nodes_sampler_interval à 5000
  • allégement de l'index

Plus de souci en ce moment

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.