У меня проблемы с накоплением сессий. Я запускаю экземпляр Tomcat 6.0.18 на сервере Windows. У меня 3 приложения.
У меня были проблемы с памятью (размер кучи или OOM). Когда я смотрю на диспетчер Tomcat, я вижу 500-1000 сеансов в каждом из трех моих приложений. Когда я просматриваю сеансы в диспетчере Tomcat, я вижу, что некоторые сеансы простаивают несколько часов, но срок их действия не истек.
Одно из веб-приложений имеет тайм-аут 10 минут, но в коде установлено значение 60 минут (для некоторых пользователей). У других приложений есть таймауты 15 и 30 минут. У меня также есть проблема в том, что webapp 1 получает повторяющиеся обращения с неправильным файлом cookie сеанса (это связано с моей балансировкой нагрузки mod_jk), что увеличивает количество сеансов. (Множество сеансов, созданных с помощью одного запроса, затем имеют тайм-аут 60 минут). Но меня озадачивает, что webapp 2 и 3 также получают высокие сессии, и что они остаются даже после тайм-аута.
Я предполагаю, что очистка сеанса происходит только тогда, когда сервер не сильно загружен, и что (в этом случае) накапливается так много сеансов, что у сервера мало свободного ЦП, и очистка никогда не запускается. Но я не могу найти никаких ссылок, подтверждающих эту теорию.
Кто-нибудь знает подробности алгоритма истечения срока сеанса? Он не запускается точно в минуты тайм-аута - когда он запускается?
Вы можете отключить сохранение сеанса через конфигурацию контекста, как указано в Справочник по настройке Apache Tomcat:
Отключить постоянство сеанса
Как описано выше, в каждом веб-приложении по умолчанию настроена реализация стандартного менеджера, и оно обеспечивает сохранение сеанса при перезапусках. Чтобы отключить эту функцию сохранения, создайте файл конфигурации контекста для своего веб-приложения и добавьте туда следующий элемент:
<Manager pathname="" />