Netflix-Zuul的ThreadLocal与RequestContext过滤器一起徘徊

时间:2018-06-19 21:01:19

标签: 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.

1 个答案:

答案 0 :(得分:0)

在代码的某个地方,正在创建一个ThreadLocal。听起来好像它存储了RequestContext,这样其他一些代码也可以不用它作为参数来获取它。这样做可能不是理想的方法,但是有时我们会做坏事来按时完成工作。

如果这是我正在处理的应用程序的日志,那么我将开始搜索ThreadLocal的创建位置。根据日志消息,我将开始寻找:

new ThreadLocal<RequestContext>

代码中的某处。然后,您需要弄清楚所指的是什么,并可能在不再需要它时找到在其上调用remove()的地方。例如,可能有一些代码在处理请求时进行设置,而在请求处理结束时未将其删除。