spring - Netflix-Zuul 使用 RequestContext 过滤器挥之不去的 ThreadLocal

标签 spring tomcat netflix-zuul

我最近参与了一个项目,但并未参与实现 Netflix-Zuul 过滤器。我不太确定要包括什么,团队的其他成员也不熟悉 Zuul。

在我们的开发服务器上部署之间关闭时,catalina 日志中的消息存在一些问题。到目前为止,我一直无法找到有关此消息的含义或从哪里开始解决它的任何指导。感谢任何指导,因为我们担心这将是一个可扩展性问题。请让我知道我可以提供哪些可能有助于追踪此问题的额外信息。

Jun 19, 2018 4:46:43 PM org.apache.catalina.loader.WebappClassLoaderBase checkThreadLocalMapForLeaks
SEVERE: The web application [studentApp] created a ThreadLocal with key of type [com.netflix.zuul.context.RequestContext$1] (value [com.netflix.zuul.context.RequestContext$1@59d4a2ba]) and a value of type [com.netflix.zuul.context.RequestContext] (value [{}]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

最佳答案

在代码的某处,正在创建一个 ThreadLocal。听起来它正在存储 RequestContext 以便其他一些代码可以在不将其作为参数的情况下获取它。这可能不是一个理想的方法,但有时我们会做坏事来按时完成事情。

如果这是在我工作的应用程序的日志中,我会开始搜索 ThreadLocal 的创建位置。根据日志消息,我会开始寻找:

new ThreadLocal<RequestContext>

在你的代码中的某处。然后你需要弄清楚它指的是什么,也许当你不再需要它时找个地方调用它的 remove() 。例如,可能有代码在处理请求时设置它,而不是在请求处理结束时将其删除。

关于spring - Netflix-Zuul 使用 RequestContext 过滤器挥之不去的 ThreadLocal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50936898/

相关文章:

spring - 如何使用注释覆盖 xml 中定义的 spring bean?

java - @SpringBootApplication 无法解析为 STS 中的类型

java - Spring MVC 不显示表单错误

java - Tomcat 和带有百分号的 URLS

java - 调整 Tomcat 内存消耗,套接字 : socket. rxBufSize

java - 如何在SpringMVC(5.x)项目中启用ehCache(3.x)

java - eclipse 项目 : tomcat server , jdk 、外部库等的设置

Spring cloud - Zuul - 自定义过滤器

java - Spring Cloud 、Zuul https

spring-boot - 如何使用 Netflix Zuul 进行金丝雀发布和动态路由?