春云 |假装Hytrix |首次通话超时
Posted
技术标签:
【中文标题】春云 |假装Hytrix |首次通话超时【英文标题】:Spring Cloud | Feign Hytrix | First Call Timeout 【发布时间】:2017-01-28 21:10:06 【问题描述】:我有一个使用 3 个假装客户端的服务。每次我启动我的应用程序时,我都会在第一次调用任何 feign 客户端时收到 TimeoutException。
在一切稳定之前,我必须至少触发每个 feign 客户端一次。在网上环顾四周,问题是 feign 或 hystrix 内部的某些东西是延迟加载的,解决方案是创建一个覆盖 spring 默认值的配置类。我已经用下面的代码试过了,但它仍然没有帮助。我仍然看到同样的问题。有人知道解决这个问题吗?是通过 hystrix 回调调用 feignclient 两次的唯一解决方案吗?
@FeignClient(value = "SERVICE-NAME", configuration =ServiceFeignConfiguration.class)
@Configuration
public class ServiceFeignConfiguration
@Value("$service.feign.connectTimeout:60000")
private int connectTimeout;
@Value("$service.feign.readTimeOut:60000")
private int readTimeout;
@Bean
public Request.Options options()
return new Request.Options(connectTimeout, readTimeout);
Spring Cloud - Brixton.SR4 Spring Boot - 1.4.0.RELEASE
这一切都在 docker 中运行 Ubuntu - 12.04 码头工人 - 1.12.1 Docker-Compose - 1.8
【问题讨论】:
我很想看看第一次调用总是超时的示例。 听起来不错,我现在添加一个堆栈跟踪 我看到了一个超时堆栈跟踪,我正在寻找一个重现问题的示例项目。抱歉我没说清楚。 我已更新到 desc 以包含版本号。我想无法尝试使用 config/eureka/4 micros / 创建一个 githib,并尝试从 4 号开始调用其他 3 个。它应该会显示出来,因为这是我的基本设置。我们有大约 10 项服务在使用,但我认为这不是 eureka 注册很多客户的问题。我也在使用 docker,并且也会包含这些版本号。 见***.com/a/44932243/2935802 【参考方案1】:我发现解决方法是Hystrix的默认属性不好。他们有一个非常小的超时窗口,并且请求总是在第一次尝试时超时。我将这些属性添加到我的配置服务中的 application.yml 文件中,现在我的所有服务都可以毫无问题地使用 feign,并且我不必在第一次超时时编写代码
hystrix:
threadpool.default.coreSize: "20"
threadpool.default.maxQueueSize: "500000"
threadpool.default.keepAliveTimeMinutes: "2"
threadpool.default.queueSizeRejectionThreshold: "500000"
command:
default:
fallback.isolation.semaphore.maxConcurrentRequests: "20"
execution:
timeout:
enabled: "false"
isolation:
strategy: "THREAD"
thread:
timeoutInMilliseconds: "30000"
【讨论】:
您错过了使用 Hystrix 的要点:当后续系统之一不存在或响应太慢时,防止请求堆积(使整个系统不可用)。通过将超时时间增加到 30 秒,您仍然有锁定整个系统的风险,而不是让 hystrix 为慢速应用程序打开电路(并让它恢复) @dvtover 系统仍然可以打开电路,您可以使用回退等。使用这些配置,您只需编写代码“这是第一次调用,这就是 hystrix 失败的原因”跨度> 当您说“配置服务”时,您指的是您的 Spring Cloud 项目中的配置服务器应用程序吗?我也面临同样的问题,我的 Zuul 网关项目有类似的配置,但我的实际服务项目没有。我是否必须在使用 Feign 客户端的单个项目中输入这些配置? @Sayantan 对不起,我刚刚看到你的回复,是的,我的意思是配置服务器而不是配置服务以上是关于春云 |假装Hytrix |首次通话超时的主要内容,如果未能解决你的问题,请参考以下文章