春云侧车hystrix超时不火
Posted
技术标签:
【中文标题】春云侧车hystrix超时不火【英文标题】:spring cloud side car hystrix timeout not fire 【发布时间】:2016-03-21 05:03:40 【问题描述】:我有一个简单的带有侧车的spring cloud应用程序,代码如下:
@SpringBootApplication
@EnableSidecar
public class SidecarApp
public static void main(String[] args)
SpringApplication.run(SidecarApp.class, args);
边车通过zuul调用另一个服务,我正在尝试配置hystrix超时但没有成功!这是我的配置:
server:
port: 9085
spring:
application:
name: cue
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 100
hystrix.command.default.execution.isolation.thread.interruptOnTimeout: true
hystrix.command.default.execution.timeout.enabled: true
sidecar:
port: 8085
health-uri: http://localhost:8085/health.json
在这些配置中,我希望如果对其他服务的调用将花费超过 100 毫秒,那么 hystrix 将立即返回,但这不会发生(服务 hystrix 调用需要 10 秒)
我是否配置错误?
注意: 对另一个服务的调用是:http://localhost:9085/cma/myinfo1,所以调用到达 sidecar,cma 是远程服务的 Eureka 名称,它调用服务 cma 中的函数 myinfo1...
【问题讨论】:
您正在使用 yaml 文件进行配置,因此您的名称应该遵循该约定。您的 hystrix 属性是基本属性,不是 yaml 格式。 你可以两种方式,我知道是因为例如属性: hystrix.command.default.fallback.enabled: true 真的改变了 hystrix 回退的行为...... 可能与这个问题有关:github.com/Netflix/Hystrix/issues/354我正在检查它 Zuul 使用信号量隔离,因此 Sidecar 也是如此。 【参考方案1】:首先,我认为你的 yaml 文件不正确,你应该使用标准格式。
您可以禁用 hystrix 的超时检查:
hystrix:
command:
default:
execution:
timeout:
enabled: false
或者将Zuul的Hystrix隔离策略改为THREAD:
hystrix:
command:
default:
execution:
isolation:
strategy: THREAD
thread:
timeoutInMilliseconds: 10000
【讨论】:
以上是关于春云侧车hystrix超时不火的主要内容,如果未能解决你的问题,请参考以下文章