Во-первых, у меня есть только базовые знания в java. У меня есть несколько микросервисов, и в настоящее время я использую zuul/eureka для проксирования сервисов.
Заметил, что при вызове микросервиса напрямую пропускная способность в 3 раза выше, чем при вызове через zuul. Поэтому мне интересно, неверна ли моя конфигурация zuul.
аб выход:
Прямой вызов микросервиса:
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
Звонок через зуул:
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
Зуул конфиг:
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
Заметил, что zuul занимает много ресурсов процессора по сравнению с самим микросервисом. Так что взял дамп потока. И я подозреваю, что RibbonLoadBalancingHttpClient, похоже, продолжает создавать экземпляры.