最近、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豆
有効期限が切れてもセッションは無効になりません。
何か手掛かりがありますか?