最近,我們將應用程序從運行在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
沒有任何幫助,會話在到期時間沒有失效。
有關這方面的一些線索?