当前位置: 首页 > 知识库问答 >
问题:

Zuul在长时间请求中超时

云季萌
2023-03-14

我使用前端Spring云应用程序(微服务)作为Zuul代理(@EnableZuulProxy)将请求从外部源路由到使用Spring云编写的其他内部微服务(Spring boot)
Zuul服务器直接来自示例部分中的应用程序

java prettyprint-override">@SpringBootApplication
@Controller
@EnableZuulProxy
@EnableDiscoveryClient
public class ZuulServerApplication {
    public static void main(String[] args) {
        new SpringApplicationBuilder(ZuulServerApplication.class).web(true).run(args);
    }
}

我在本地运行了这组服务,这一切似乎都工作正常,但如果我在网络上运行它有一些负载,或通过VPN,然后我开始看到Zuul转发错误,我在日志中看到客户端超时。

有没有办法改变Zuul转发的超时时间,这样我就可以从眼前的问题中消除这个问题?对此有哪些可访问的参数设置?

共有3个答案

宗政小林
2023-03-14

我也遇到过同样的问题:在长请求中,尽管设置了ribbon,但Zuul的hystrix命令在大约一秒钟后仍然超时。ReadTimeout=10000

我通过完全禁用超时解决了这个问题:

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: false

另一种可行的方法是将Zuul的Hystrix隔离策略更改为线程:

hystrix:
  command:
    default:
      execution:
        isolation:
          strategy: THREAD
          thread:
            timeoutInMilliseconds: 10000
韩弘阔
2023-03-14

要设置的特性是:ribbon。一般情况下读取超时

穆睿才
2023-03-14

在我的情况下,我必须改变以下属性:

zuul.host.socket-timeout-millis=30000
 类似资料:
  • 经过长时间的调查,问题似乎是长时间运行的请求超时,并且在NodeJS中再次调用endpoint。没有来自浏览器的新网络请求。我做了一些测试,2分钟后再次调用endpoint。我读到NodeJS中http请求的默认超时时间为2分钟。 https://nodejs.org/docs/latest-v12.x/api/http.html#http_server_timeout 我使用的是NestJS(有

  • 我希望设置我的Spring Boot server超时,比如说15秒。明确一点:我希望如果我的服务器在15秒内没有响应,它将返回一个错误响应(类似于Heroku中发生的情况,只有30秒)。我怎么能那么做? 我的问题实际上源于这样一个事实,即该服务是一个网关,它调用另一个服务,有时需要很长时间来响应,而我无法控制该服务的超时。因为我使用的是SDK文件来调用服务器,所以我无法控制传出的调用。有没有一种

  • 我有一个Spring Boot应用程序,我想实现的是,当我的Rest控制器需要更长的时间来处理请求时,只需发送错误而不继续处理请求。这可能吗?我如何以某种方式实现它,而无需在控制器级别进行修改,而是在应用程序级别进行修改。这是在最新的Spring启动

  • 2013/04/22 12:35:56[错误]2709#0:*1从上游读取响应标头时上游超时(110:连接超时),客户端:xx.xx.xx.xx,服务器:,请求:“get/entity/datasenders/http/1.1”,上游:“uwsgi://127.0.0.1:9001”,主机:“xxx.xx.xx.x” 我已经设置了标题超时和uWSGI发送/读取超时5分钟,有人能告诉我我可以做什么来

  • 我有一个在Tomcat7上运行的Spring3.0WebMVC应用程序。在应用程序启动时,我启动一个后台线程来加载内存缓存,其中包含来自数据库的记录。该线程从数据库加载所有数据通常需要一个多小时。在同一个应用程序中,我有一个@Controller注释类,它公开了一个REST接口,客户端可以通过该接口从加载的缓存中获取对象。 我们的要求之一是,在数据加载完成之前发出的任何REST请求都将立即向客户端

  • 当没有响应返回时,我需要超时我的RESTAPI。例如,当我发出请求时,如果返回响应需要5秒钟以上,则超时。 为了实现这一点,我选择了使用Hystrix的断路器。但我不确定这是否是解决此问题的正确方法,如果一切都好,是否应该对Hystrix进行更多配置? 我当前的实现看起来像, 主类 RestController 应用程序属性 当超时时,它抛出一个HystrixRunTimeException,并由