Spring Cloud gateway 30s 超时,

Posted

技术标签:

【中文标题】Spring Cloud gateway 30s 超时,【英文标题】:Spring Cloud gateway is timing out in 30s, 【发布时间】:2021-12-28 12:59:55 【问题描述】:

我正在使用 Spring Cloud Gateway 作为我的网关应用程序。当我尝试直接调用 api 时它会成功,但是通过它调用时会在 30 秒内超时。我正在尝试上传一个大约 250MB 的多部分文件。直接调用应用大约 6-7 分钟成功。

Spring Cloud api网关超时配置

- id:  xyz
          uri: $xyz.----
          predicates:
            - Path=/$xyz/**
          filters:
            - RewritePath=/$xyz/(?<oldPath>.*), /$oldPath
            - CachingRequestBody
            - SignResponseBody
            - name: RequestSize
              args:
               maxSize: 1024MB
          metadata:
            response-timeout: 600000
            connect-timeout: 600000
            serviceName: $xyz




public Customizer<ReactiveResilience4JCircuitBreakerFactory> defaultCustomizer() 
        return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
                .circuitBreakerConfig(CircuitBreakerConfig.ofDefaults())
                .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofMillis(600000)).build())
                .build());



cloud:
    gateway:
      httpclient:
        connect-timeout: 600000
        response-timeout: 600s
      default-filters:
        - name: OrderedCircuitBreaker
          args:
            name: global-fallback
            fallbackUri: forward:/fallback

我们将不胜感激任何帮助

【问题讨论】:

httpclient 配置的结构顶部是否有 spring 关键字?在这里查看cloud.spring.io/spring-cloud-gateway/reference/html/… 【参考方案1】:

大家好,我找到了答案, 网关中的每个请求都经过一组过滤器。如您所见,过滤器 CachedRequestBody。此过滤器缓存请求正文。如果它非常大并且api网关没有空间,那么它会因java堆空间错误而超时。我删除了那个过滤器,现在它工作正常。谢谢

【讨论】:

你能edit你的答案来解释你是如何删除它的吗?

以上是关于Spring Cloud gateway 30s 超时,的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud实战Spring Cloud GateWay服务网关

spring cloud gateway 如何工作

Spring Cloud Gateway集成

spring cloud gateway 的执行流程

spring cloud gateway 某些路由中跳过全局过滤器

spring cloud gateway 报错 Unable to find GatewayFilterFactory with name