【问题标题】:Debugging Performance of Spring Cloud Gateway with Netty使用 Netty 调试 Spring Cloud Gateway 性能
【发布时间】:2021-04-29 19:18:30
【问题描述】:

我有使用 Netty 运行的 Spring Cloud Gateway(格林威治)。此应用程序接收请求,然后根据路由配置向下游应用程序发送请求。

随机少数请求需要大量时间(> 70 秒)。即使下游服务器在 5 秒内做出响应,Netty 线程 (reactor-http-epoll-*) 也没有收到响应。我已启用调试日志以查看这些线程在做什么。从初步分析来看,这些线程似乎正在处理其他事情,并且始终处于可运行状态。发生这种情况时,到服务器的流量并不少见,并且与以前相同。

我的问题是:

  • 为什么在收到响应时反应器线程没有处理响应(根据下游应用程序的日志记录,它发送了响应。但是,spring-cloud 应用程序在日志中收到响应的方式太晚了)。是不是所有的线程都忙着做其他事情。
  • 是否有任何关于如何调查此类问题的运行手册?
  • 日志中的某些地方我确实在日志中看到大量非活动连接,但不确定这是否会影响任何事情。 (通道已清理,现在有 56 个活动连接和 1400 个非活动连接)

任何有关如何进行调查以了解应用程序中出现随机缓慢的原因的一般指导都会真正有所帮助。提前感谢您的帮助。

【问题讨论】:

    标签: spring-webflux spring-cloud-gateway reactor-netty


    【解决方案1】:

    好的,所以我最终做了以下事情,经过大量调查,它开始对我很好。

    1. 启用日志记录。查看创建了多少连接。在我的例子中,很多新的连接被创建并且它们没有被重复使用。

      io.netty.leakDetectionLevel=paranoid

      logging.level.reactor.netty=调试

      logging.level.reactor.netty.channel.FluxReceive=DEBUG

      spring.cloud.gateway.httpclient.wiretap=true

      spring.cloud.gateway.httpserver.wiretap=true

    2. 确保没有在 reactor-http-epoll-* 线程上运行阻塞代码。

    3. 我将 Spring Cloud 依赖项从 Greenwhich train 升级到最新版本的 Hoxton train。

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 2019-04-15
      • 2018-11-28
      • 1970-01-01
      • 2021-10-23
      • 2021-12-11
      • 2022-12-11
      • 2019-01-09
      • 2021-07-23
      相关资源
      最近更新 更多