【问题标题】:Difference in thread name between local machine and server本地机器和服务器之间的线程名称差异
【发布时间】:2022-01-08 06:06:24
【问题描述】:

我们有一个使用 Webclient 的 Spring 应用程序,它对外部 API 进行一些调用。 在日志中的本地环境线程名称是 [reactor-http-nio-X] :

2021-12-01 15:58:42.960 |  | DEBUG 37528 --- [ctor-http-nio-5] o.s.s.w.s.u.m.OrServerWebExchangeMatcher : Trying to match using PathMatcherServerWebExchangeMatcher{pattern='/webjars/**', method=null}
2021-12-01 15:58:42.960 |  | DEBUG 37528 --- [ctor-http-nio-5] athPatternParserServerWebExchangeMatcher : Request 'GET /courses' doesn't match 'null /webjars/**'

在服务器线程名称改为 [reactor-http-epoll-X] :

2021-12-01 15:58:34.462 |  | DEBUG 37528 --- [ctor-http-nio-4] io.netty.handler.ssl.SslHandler          : [id: 0x94714fe1, L:/192.168.0.7:60057 - ...
2021-12-01 15:58:34.463 |  |  INFO 37528 --- [ctor-http-nio-4] HTTP-TRACING                             : [id:94714fe1, L:/192.168.0.7:60057 - ...

据我了解,这种差异也会在调度程序挂钩上产生不同的行为。

我如何理解为什么线程名称(和行为)如此不同,以及如何使用 nio 线程将服务器配置为像本地机器一样工作?

【问题讨论】:

  • In my understanding this difference is also creating a different behaviour on scheduler hooks 什么意思?请为该声明链接一个来源。此外,在您的问题中,链接的日志包含相同的线程名称 ctor-http-nio-4ctor-http-nio-5

标签: spring-webflux project-reactor spring-webclient reactor-netty


【解决方案1】:

这些名称反映了这样一个事实,即在您的服务器上使用的底层 Netty 库是本机库(Linux epoll),而您的本地计算机是 Mac 或 Windows PC。名称应该不会影响反应器提供的钩子的行为,除非编写了专门查看线程名称的钩子...

【讨论】:

  • 谢谢西蒙。我正在使用这个钩子Schedulers.onScheduleHook("mdc", runnable -> {,但似乎没有在服务器中触发(Linux epoll)
  • 你在看钩子里的线程名吗?您只共享了 lambda 的左括号,这无济于事...
猜你喜欢
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2016-05-12
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多