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似乎一直在实例化.
您指定的 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 毫秒的差异。到目标服务器。
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |