zuul proxy slowness - RibbonLoadBalancingHttpClient

Ram*_*dev 5 httpclient netflix-eureka netflix-zuul netflix-ribbon

首先,我只掌握java的基础知识.我有一些微服务,目前使用zuul/eureka代理服务.

注意到直接调用微服务时吞吐量比通过zuul调用时快3倍.所以我想知道我的zuul配置是否错误.

ab输出:

直接调用微服务:

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
Run Code Online (Sandbox Code Playgroud)

通过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 
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

注意到与微服务本身相比,zuul需要大量的CPU.所以采取了一个线程转储.而我怀疑RibbonLoadBalancingHttpClient似乎一直在实例化.


线程转储:https://1drv.ms/t/s !Atq1lsqOLA98mHjh0lSJHPJj5J_I

Sat*_*tya 0

您指定的 zuul.host.* 属性仅适用于直接指定“url”的 zuul 路由,不适用于从 Eureka 获取的 serviceIds 路由。看这里。您可能希望增加功能区级别总 HTTP 连接数和每个主机的连接数,然后重新运行测试。这是一个示例配置 -

ribbon:
  ReadTimeout: 30000
  ConnectTimeout: 1000
  MaxTotalHttpConnections: 1600
  MaxConnectionsPerHost: 800
Run Code Online (Sandbox Code Playgroud)

在我对 Zuul 的测试中,我确实记得看到一些请求的最大响应时间比 zuul 绕过的直接目标请求高得多,但第 95 个和第 99 个百分位数始终与直接请求大约有约 200 毫秒的差异。到目标服务器。