5 votes

lenteur du proxy zuul - RibbonLoadBalancingHttpClient

Tout d'abord, je n'ai que des connaissances de base en Java. J'ai quelques microservices et j'utilise actuellement zuul/eureka pour proxyer les services.

J'ai remarqué qu'en appelant le microservice directement, le débit est 3 fois plus rapide que lorsqu'il est appelé par zuul. Je me demande donc si ma configuration zuul est mauvaise.

ab output :

Appeler directement le microservice :

Concurrency Level:      10
Time taken for tests:   5.938 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      37750000 bytes
HTML transferred:       36190000 bytes
Requests per second:    1684.20 [#/sec] (mean)
Time per request:       5.938 [ms] (mean)
Time per request:       0.594 [ms] (mean, across all concurrent requests)
Transfer rate:          6208.84 [Kbytes/sec] received

Appel à travers zuul :

Concurrency Level:      10
Time taken for tests:   15.049 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      37990000 bytes
HTML transferred:       36190000 bytes
Requests per second:    664.52 [#/sec] (mean)
Time per request:       15.049 [ms] (mean)
Time per request:       1.505 [ms] (mean, across all concurrent 

Configuration de Zuul :

server:
  port: 7001

zuul:
  #Services will be mapped under the /api URI
  prefix: /api
  sslHostnameValidationEnabled: false
  host:
    maxTotalConnections: 800
    maxPerRouteConnections: 200

endpoints:
  restart:
    enabled: true
  shutdown:
    enabled: true
  health:
    sensitive: false

eureka:
  instance:
      hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

ribbon:
   eureka:
     enabled: true

spring:
  application:
    name: zuul-server
    id: zuul-server

J'ai remarqué que zuul prenait beaucoup de CPU par rapport au microservice lui-même. Donc j'ai pris un thread dump. Je soupçonne que le RibbonLoadBalancingHttpClient semble continuer à s'instancier.


Décharge de fil : https://1drv.ms/t/s!Atq1lsqOLA98mHjh0lSJHPJ5J_I

0voto

Satya Points 419

Les propriétés zuul.host.* que vous avez spécifiées sont uniquement pour les routes zuul avec "url" spécifié directement et ne s'appliquent pas aux routes serviceIds récupérées depuis Eureka. Voir ici . Vous pouvez augmenter le niveau de ruban total des connexions HTTP et des connexions par hôte et relancer votre test. Voici un exemple de configuration -

ribbon:
  ReadTimeout: 30000
  ConnectTimeout: 1000
  MaxTotalHttpConnections: 1600
  MaxConnectionsPerHost: 800

Lors de mes tests avec Zuul, je me souviens avoir constaté que les temps de réponse maximums de certaines requêtes étaient beaucoup plus élevés que les requêtes directes vers la cible contournées par zuul, mais les 95e et 99e percentiles étaient toujours comparables avec une différence d'environ 200 ms avec les requêtes directes vers le serveur cible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X