【已解决】网关路由转发请求失败,也没有重试

  • 下面是我们的网管在路由转发一个请求的时候,出现了错误, 看提示是发现连接已经断连,而且http响应已经发送了一部分,导致无法重试请求

  • 下面是另一个例子,

从上面连个日志例子看,我觉得是网管的连接池问题, 连接池的连接失效了(因为上游的服务器重启啥的),但网关还在用这个连接去转发http请求.
想询问下老师们,有什么调优参数,可以优化这种问题现象

使用的网关版本是多少?

3.0.6的

你的问题其实服务信息没有及时刷新。
网关服务信息的刷新是需要从注册中心读数据的。网关定义了 RouteRefreshListener触发这个动作,但具体实现是需要有注册中心的客户端支持。你用的注册中心是什么?

NACOS2.1.1

帖子的现象是偶尔出现的,也不一定出现这个问题, 有时浏览器页面停了一段时间,去刷新页面就会出现500错误, 看日志就是类似打印.

nacos的client没有实现动态更新网关路由信息的能力。所以这个路由信息的更新是网关的负载均衡模块做的,是缓存实现,默认超时时间30s。

一般来说我们不需要负载均衡模块来做缓存,因为在注册中心的客户端中已经有一个服务信息的列表缓存了。所以通过下面的配置关闭:

spring:
  cloud:
    loadbalancer:
      cache:
        enabled: false

如果还要优化就得从nacos的客户端入手了

好的,感谢老师支持

重新翻了下文档,缓存可以直接通过配置关闭

好的,我试下,老师辛苦了