2009-06-06 2 views
11

Мы запускаем сервер приложений tomcat, который обрабатывает более 100 одновременных сеансов. За последние 2 месяца наиболее активные пользователи заметили, что иногда их вызывают из системы.Неожиданно завершаются сеансы Tomcat

Как я понял из сеанса логарифма tomcat, срок действия истек без какой-либо причины.

Я не вижу проблем со стороны веб-приложения. Есть ли какие-либо проблемы со стороны tomcat?

Tomcat 6.0.18.

+2

Что вы считаете причиной? –

ответ

8

Если не было никакого кода шанса запускающего это, я хотел бы посмотреть на использование памяти. Этот может быть быть следствием завершения Tomcat из памяти и отмены недействительных сеансов для восстановления.

Если на всех возможных мониторах вы найдете сбор мусора и/или надевайте надзор с помощью jconsole или jvisualvm.

2

есть тайм-аут, который можно настроить в вашем web.xml:

<web-app> 
    ... 
    <session-config> 
    <session-timeout>-1</session-timeout> 
    </session-config> 
</web-app> 

использование -1 для тайма-аута

+1

Проблема не там. Текущий тайм-аут устанавливается на один час. Но пользователи получают ногами при активном использовании приложения. –

-1

Несмотря на то, что я не знаю причину проблемы, одним из возможных исправлений (которое я сделал в моем предыдущем проекте) было бы запуск приложения в кластере tomcat и восстановление сеанса сеанса. Сессии могут быть по умолчанию липкими, а когда один узел опускается, здоровые узлы собирают сеансы, и все это прозрачно для конечного пользователя.

+3

Кажется, что кластеризация, скорее всего, вызовет проблемы с сеансами, чем исправить их. – erickson

2

Увеличьте регистрацию сеансов, что может пролить свет на вашу проблему.

В файле конфигурации Tomcat Logging in Tomcat приведен пример увеличения регистрации сеансов.

0

Вы можете найти базу данных Tomcat, но лучше сначала взглянуть на ваше веб-приложение. Шансы на то, что с Tomcat что-то не так, очень низки.

Попытайтесь исследовать причину аннулирования сеанса. Вы используете фильтры? Есть ли у вас кросс-контекстные запросы? Попробуйте добавить информацию о регистрации для каждого запроса, чтобы узнать, когда именно сессия потеряна.

4

Я бы увеличил мониторинг сервера в целом и сеансов специально.

Хорошее приложение для мониторинга - lambda probe - позволяет просматривать текущие сеансы и их данные. Я бы также добавил HttpSessionListener для создания и уничтожения сеанса журнала.

Редактировать

ли возможно, что вы добавляете некоторые не serializble объекты сессии и Tomcat не в пассивации их на диск?

Edit 2

лямбда-зонд, кажется мертвым, и там гораздо лучше форк проекта над на http://code.google.com/p/psi-probe/

7

Возможной причиной является то, что вы положили в сессии объект, который не реализовать интерфейс Serializable. Tomcat иногда пишет некоторые из сессий на диске. Если сеанс содержит несериализуемые объекты, он просто будет удален из контейнера (из-за исключения NotSerializableException). Если это происходит, вы должны увидеть Exception в файле журнала tomcat.

+0

В каких случаях tomcat пишет сеансы на диске? в кластерной среде или в случае нехватки памяти? –

2

Мы просто побежал в это с котом 6_0_18 и IBM 1,5 Jvm

оказывается, что это был вопрос JVM IBM с атомарных операций.

Существует исправление в котлетах больше 6_0_19 для его обработки.

Он также не встречается в ВС 1.5 JVM

вот еще некоторые детали

tomcat bugzilla case

2

Я видел подобные проблемы, когда существуют следующие предпосылки:

  • множественным экземпляры приложения tomcat установлены на нескольких JVM
  • load ba lancing (между веб-сервером и JVM Tomcat) настроен неправильно.
  • Функция репликации сеанса Tomcat является не включен

Из-за неправильной балансировки нагрузки конфигурации, веб-сервер может случайно принять решение разорвать привязку сеансов и отправить входящий запрос на Tomcat JVM, который никогда не видел сеанс раньше. Tomcat JVM выпустит новый сеанс, и пользователь потеряет все свои предыдущие данные сеанса и начнет эффективно работать.

+0

Можете ли вы более подробно рассказать о том, как правильно настроена балансировка нагрузки? – fool4jesus

Смежные вопросы