最近,我们将应用程序从运行在tomcat中的web应用程序移植到带有嵌入式tomcat的spring引导应用程序。Spring引导嵌入式tomcat应用程序会话不会失效
运行应用程序几天后,内存和CPU使用率达到100%。 在堆转储分析中,它出现了一堆没有销毁的http会话对象。
我可以在调试中看到使用配置的超时值创建的会话,比如5分钟。但是在这段时间之后,失效不会被触发。它只在我在超时期限之后再次请求时才被调用。
我比较有应用程序在Tomcat上运行,我可以看到该会话无效由ContainerBackgroungProcessor线程触发此行为[StandardManager(ManagerBase).processExpires()]
我没有看到在春季启动这个后台线程应用。
做了什么之后发现了一些建议:
会话超时设置在application.properties: server.session.timout = 300 或EmbeddedServletContainerCustomizer @Bean: factory.setSessionTimout(5,TIMEUNIT .MINUTES)
新增HttpSessionEventPublisher和豆类的SessionRegistry
没有任何帮助,会话在到期时间没有失效。
有关这方面的一些线索?