我们为我们的应用添加了一些外部系统。我们正在使用Hystrix命令使用apache http客户端库执行远程REST调用。
我们遇到的问题是,对于一个外部服务器电路始终处于打开状态,我们会获得默认回退。减少睡眠窗口并没有真正帮助
public Command(CloseableHttpClient httpClient, HttpRequestBase httpRequest) {
super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("MyServer"))
.andThreadPoolKey(HystrixThreadPoolKey.Factory
.asKey(ServerManager.WorkManager.name())));
ConfigurationManager.getConfigInstance().setProperty(
"hystrix.command.Command.execution.isolation.thread.timeoutInMilliseconds",
getExecutionTimeout());
ConfigurationManager.getConfigInstance().setProperty(
"hystrix.command.Commad.circuitBreaker.sleepWindowInMilliseconds",
getIgnoreTimeout());
this.httpRequest = httpRequest;
this.httpClient = httpClient;
}
对于其他系统,断路器按预期工作。 试图重新启动应用服务器,即使断路器似乎已打开。
是否存在边缘情况或其他情况?或者Hystrix命令应该以不同的方式处理?
答案 0 :(得分:0)
问题不在于Hystrix而是与http连接泄漏有关。 Http连接没有被释放回池中。因此存在连接泄漏。