2015-04-21 22 views
1

我们对功能区和尤里卡的顶部使用假死。佯/色带/尤里卡 - 被Apache的HttpClient池支持的RESTClient实现创建,但从未使用过

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

不幸的是,这些看似无用RestClient实例的创建(每假死客户之一)有它自己的Apache HttpClient的,自己的连接池,家政线程和度量的东西...

快速看一下/度量致动器示出了端点等的指标:

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。

是否有人经历了同样的行为呢? 为什么这些RestClient实例为每个假客户端创建并从未使用过?

+0

但是,我注意到'RestClient'正在使用,如果我使用Spring RestTemplate来调用远程服务而不是Feign客户端。是否有可能通过功能区配置始终创建RestClient,即使未使用任何其他组件(例如使用Feign时)也是如此? –

+0

这似乎是因为'SpringLBClientFactory'使用功能区的'SpringClientFactory'。后者创建一个'RestClient',即使其他bean不需要。可能是那个工厂方法应该标记为'@ Lazy'? –

+0

也许你应该在github上打开一个关于这个问题(似乎应该消失)? –

回答