【问题标题】:zuul proxy slowness - RibbonLoadBalancingHttpClientzuul 代理缓慢 - RibbonLoadBalancingHttpClient
【发布时间】:2016-12-03 11:33:14
【问题描述】:

首先,我只有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

通过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 

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

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


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

【问题讨论】:

    标签: httpclient netflix-zuul netflix-eureka netflix-ribbon


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      相关资源
      最近更新 更多