我总是得到“ {“状态”:504,“错误”:“网关超时”,“消息”:“ com.netflix.zuul.exception.ZuulException:Hystrix读取超时”}“?

时间:2019-04-08 23:31:46

标签: java microservices netflix-zuul

我总是收到“ 2019-04-09 07:24:23.389 WARN 11676 --- [nio-9095-exec-5] oscnzfilters.post.SendErrorFilter:过滤期间发生错误”,请求所花费的时间超过1秒。

我已经尝试增加超时时间,但是没有一个起作用。

2019-04-09 07:24:23.389 WARN 11676 --- [nio-9095-exec-5] o.s.c.n.z.filters.post.SendErrorFilter:过滤期间出错

com.netflix.zuul.exception.ZuulException:     在org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter.findZuulException(SendErrorFilter.java:114)〜[spring-cloud-netflix-zuul-2.1.0.RELEASE.jar:2.1.0.RELEASE]     在org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter.run(SendErrorFilter.java:76)〜[spring-cloud-netflix-zuul-2.1.0.RELEASE.jar:2.1.0.RELEASE]     在com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:117)〜[zuul-core-1.3.1.jar:1.3.1]     在com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:193)〜[zuul-core-1.3.1.jar:1.3.1]     在com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.java:157)〜[zuul-core-1.3.1.jar:1.3.1]     在com.netflix.zuul.FilterProcessor.error(FilterProcessor.java:105)〜[zuul-core-1.3.1.jar:1.3.1]     在com.netflix.zuul.ZuulRunner.error(ZuulRunner.java:112)〜[zuul-core-1.3.1.jar:1.3.1]     在com.netflix.zuul.http.ZuulServlet.error(ZuulServlet.java:145)〜[zuul-core-1.3.1.jar:1.3.1]     在com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.java:83)〜[zuul-core-1.3.1.jar:1.3.1]     在org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:165)〜[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]     在ava.lang.Thread.run(Thread.java:834)〜[na:na]

3 个答案:

答案 0 :(得分:0)

您可以检查我的答案: here

Hystrix的默认读取超时为1秒,您可以在application.yaml文件中进行更改。它可以全局或按服务完成。

答案 1 :(得分:0)

上述问题是由于hysterix超时引起的。 可以通过禁用hystrix超时或按如下所示增加hysterix超时来解决上述问题:

# Disable Hystrix timeout globally (for all services)
hystrix.command.default.execution.timeout.enabled: false

#To disable timeout foror particular service,
hystrix.command.<serviceName>.execution.timeout.enabled: false

# Increase the Hystrix timeout to 60s (globally)
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000

# Increase the Hystrix timeout to 60s (per service)
hystrix.command.<serviceName>.execution.isolation.thread.timeoutInMilliseconds: 60000

如果您将发现服务用于服务查找和路由,则上述解决方案将起作用。

详细说明如下:spring-cloud-netflix-issue-321

答案 2 :(得分:0)

您在使用邮递员或任何其他 http 测试人员进行 H2 控制台测试时超时,因为:使用 Zuul...hysterix...您正在尝试将完全相同的对象发送到 H2 数据库。这可能是因为您的模型上也有验证器。解决方法:通过重新编辑确保json、xml或其他任何对象相对唯一,然后再次尝试发送请求。