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