SpringCloud:Zuul路由配置超时问题

测试访问时长

修改下业务类,增加sleep休眠时长,以此查看Zuul的熔断

@GetMapping("/test1")
    public Object test1() {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "dbToEs";
    }

    @GetMapping("/test2")
    public Object test2() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "dbToEs";
    }

    @GetMapping("/test3")
    public Object test3() {
        try {
            Thread.sleep(5500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "dbToEs";
    }

大概执行2秒多,然后还没执行完,zuul就执行熔断了。

报错信息

com.netflix.zuul.exception.ZuulException:Forwarding error 

Caused by: java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out

Caused by: java.net.SocketTimeoutException: Read timed out

很明显,根据报错信息,应该是zuul的调用等待时间超时

解决办法

如果路由方式是serviceId的方式,配置ribbon生效,如果是url的方式,则配置zuul.host生效。(此处重要!使用serviceId路由和url路由是不一样的超时策略)

以下是两种配置文件的方式,可根据需要选取配置。

配置application.yml文件

ribbon:
  ReadTimeout: 100000
  ConnectTimeout: 60000
  SocketTimeout: 100000

zuul:
  max:
    host:
      connections: 5000
  host:
    socket-timeout-millis: 60000
    connect-timeout-millis: 60000

配置application.properties文件

ribbon.ReadTimeout=100000
ribbon.ConnectTimeout=60000
ribbon.SocketTimeout=100000

zuul.max.host.connections=5000
zuul.host.socket-timeout-millis=60000
zuul.host.connect-timeout-millis=60000

文章转载至:https://blog.csdn.net/tianyaleixiaowu/article/details/78772269https://www.cnblogs.com/dauber/p/9424505.html

猜你喜欢

转载自www.cnblogs.com/nhdlb/p/12605105.html