Zuul timing dans les demandes de longue durée

J'utilise une application spring cloud frontale (micro service) agissant en tant que proxy zuul (@EnableZuulProxy) pour acheminer les demandes d'une source externe vers d'autres services micro internes écrits à l'aide de Spring cloud (Spring boot).
Le serveur zuul est tout droit sorti des applications dans la section samples

@SpringBootApplication
@Controller
@EnableZuulProxy
@EnableDiscoveryClient
public class ZuulServerApplication {
    public static void main(String[] args) {
        new SpringApplicationBuilder(ZuulServerApplication.class).web(true).run(args);
    }
}

J'ai couru cet ensemble de services localement et tout semble bien fonctionner mais si je l'exécute sur un réseau avec une charge ou via un VPN, je commence à voir des erreurs de transfert zuul que je vois comme des délais d'attente du client dans les journaux

Est-il possible de changer le délai d'attente sur les Zuul forwards afin que je puisse éliminer ce problème de mes préoccupations immédiates. Quels paramètres de paramètres accessibles sont là pour cela.

Je suis au milieu d'une version et cela vient d'apparaître:)

34
demandé sur sfat 2015-03-06 20:26:40

7 réponses

Les propriétés à définir sont: {[0] } en général et <service>.ribbon.ReadTimeout pour un service spécifique, en millisecondes. Le wiki ruban a quelques exemples. ce javadoc a les noms de propriété.

28
répondu spencergibb 2015-03-06 18:01:25

Dans mon cas, j'ai dû changer la propriété suivante:

zuul.host.socket-timeout-millis=30000
23
répondu acohen 2015-09-02 00:06:59

J'ai rencontré le même problème: dans les requêtes longues, la commande hystrix de Zuul a gardé le timing après environ une seconde malgré le réglage ribbon.ReadTimeout=10000.

Je l'ai résolu en désactivant complètement les délais d'attente:

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: false

Une alternative qui fonctionne également est de changer la stratégie D'isolement Hystrix de Zuul pour THREAD:

hystrix:
  command:
    default:
      execution:
        isolation:
          strategy: THREAD
          thread:
            timeoutInMilliseconds: 10000
19
répondu codependent 2015-12-28 11:41:22

J'ai dû modifier deux délais d'attente pour forcer zuul à arrêter de chronométrer les demandes de longue durée. Même si les délais d'attente hystrix sont désactivés, le ruban reste le délai d'attente.

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: false
ribbon:
  ReadTimeout: 100000
  ConnectTimeout: 100000 
12
répondu dseibert 2016-09-26 18:32:46

Cela a fonctionné pour moi, j'ai dû définir le délai de connexion et de socket dans le application.yml:

zuul:
  host:
    connect-timeout-millis: 60000 # starting the connection 
    socket-timeout-millis: 60000  # monitor the continuous incoming data flow
8
répondu Eduardo Sanchez-Ros 2017-04-28 12:33:32

Si Zuul utilise la découverte de service, vous devez configurer ces délais d'attente avec les propriétés du ruban ribbon.ReadTimeout et ribbon.SocketTimeout.

Si vous avez configuré Zuul itinéraires en spécifiant les Url, vous devez utiliser zuul.host.connect-timeout-millis et zuul.host.socket-timeout-millis

Par routes je veux dire

zuul:
  routes:
    dummy-service:
      path: /dummy/**
1
répondu jayant mishra 2018-04-09 13:32:52

Seuls ces paramètres sur application.yml ont fonctionné pour moi:

ribbon:
    ReadTimeout: 90000
    ConnectTimeout: 90000

eureka:
    enabled: true

zuul:
    host:
        max-total-connections: 1000
        max-per-route-connections: 100
    semaphore:
        max-semaphores: 500

hystrix:
    command:
        default:
            execution:
                isolation:
                    thread:
                        timeoutInMilliseconds: 1000000

J'espère que ça aide quelqu'un!

0
répondu rsb2097 2018-04-16 17:36:51