1

我们在 Ribbon 和 Eureka 之上使用 Feign。

我们注意到com.netflix.niws.client.http.RestClient为每个 Feign 客户端自动创建了一个实例,但从未使用过。相反,Feign.Builder创建一个feign.ribbon.RibbonClient将实际 HTTP 调用委托给feign.Client.Default实例的 a。后者使用没有任何池功能的标准 Java HttpConnection。

不幸的是,这些显然无用的RestClient实例(每个 feign 客户端一个)的创建附带了它自己的 Apache HttpClient、它自己的连接池、管家线程和指标的东西......

快速查看 /metrics 执行器端点会显示如下指标:

counter.servo.<client name>_createnew: 0
counter.servo.<client name>_delete: 0
counter.servo.<client name>_release: 0
counter.servo.<client name>_request: 0
counter.servo.<client name>_reuse: 0

这些指标由com.netflix.http4.NamedConnectionPool. 无论活动如何,它们的价值都保持在 0。

有人经历过同样的行为吗?为什么为每个 feign 客户端创建这些RestClient实例并且从未使用过?

4

1 回答 1

0

观察到的行为是由问题https://github.com/spring-cloud/spring-cloud-netflix/issues/312引起的。修复计划包含在 Spring Cloud 1.0.2 中

于 2015-06-03T20:28:44.453 回答